vector 与 set区别
注:本文内容摘自网络,准确性有待验证,现阶段仅供学习参考。尊重作品作者成果,原文链接 :http://blog.csdn.net/wxdcxp/article/details/5279618
首先,vector是序列式容器而set是关联式容器。set包含0个或多个不重复不排序的元素,也就是说set能够保证它里面所有的元素都是不重复的。另外对set容器进行插入时可以指定插入位置或者不指定插入位置。如insert(v.begin(),1),也可以直接用insert(1)。还有一点是set对一些操作符没有进行重载,如<
下面是举个例子:
vector插入及遍历:
#include <iostream> #include <list> #include <vector> #include <deque> #include <set> using namespace std; int main(void) { vector<int> v; v.insert(v.begin(),1); //如果使用insert(1)不指定插入位置,会出错 v.insert(v.begin(),2); v.insert(v.begin(),1); v.insert(v.begin(),3); vector<int>::iterator vp = v.begin(); for(vp = v.begin();vp < v.end(); vp++) cout << *vp << endl; return 0; } 运行程序输出的结果是: 3 1 2 1
set插入及遍历:
#include <iostream> #include <list> #include <vector> #include <deque> #include <set> using namespace std; int main(void) { set<int> v; v.insert(v.begin(),1); v.insert(v.begin(),2); v.insert(v.begin(),1); v.insert(v.begin(),3); set<int>::iterator vp = v.begin(); //for(vp = v.begin();vp < v.end(); vp++) //如果使用这句会出错,因为set容器对<没有重载 while(vp!=v.end()) cout << *vp++ << endl; return 0; } 运行后结果是: 1 2 3 也就是说,set容器对有重复的元素只取其中的一个。