vector与set区别(基础知识)
2014-02-25 21:51
323 查看
首先,vector是序列式容器而set是关联式容器。set包含0个或多个不重复不排序的元素。也就是说set能够保证它里面所有的元素都是不重复的。另外对set容器进行插入时可以指定插入位置或者不指定插入位置。如insert(v.begin(),1),也可以直接用insert(1)。还有一点是
set对一些操作符没有进行重载,如<
下面是举个例子:
[cpp] view plaincopy
#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
[cpp] view plaincopy
#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容器对有重复的元素只取其中的一个。
set对一些操作符没有进行重载,如<
下面是举个例子:
[cpp] view plaincopy
#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
[cpp] view plaincopy
#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容器对有重复的元素只取其中的一个。
相关文章推荐
- Unity3D笔记 Collect
- 奋发图强,冲向NOIP2014!
- SharePoint 2010 master page 控件介绍(4):隐藏placeholder
- Linux 下的编辑/编译器
- 【网络金融部团队及负责人,太平洋证券股份有限公司】前程无忧官方招聘网站
- Stones
- SharePoint 2010 master page 控件介绍(4):隐藏placeholder
- 多读些demo
- 中国的事情,往往变的很快(zz)
- text段、data段和bss段介绍
- csv
- 链表指针uva11988
- 解决Elementary OS和Windows时间不一致
- 关于C#获取html代码出现404错误的解决方法
- zynq正确使用GPIO
- unsigned int 与 unsigned long 一样吗?
- 《STL源码剖析》——迭代器(iterators)概念与traits编程技法(一)
- C语言extern关键字使用
- C++解析JSON进行网络传输--一个通过JSON方式的socket传输
- 图说微积分(八)极限