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容器对有重复的元素只取其中的一个。
posted on 2014-07-24 09:46  默枪KG  阅读(2609)  评论(0编辑  收藏  举报