Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2155|回复: 0
打印 上一主题 下一主题

容器

[复制链接]

437

主题

566

帖子

2381

积分

金牌会员

Rank: 6Rank: 6

积分
2381
跳转到指定楼层
楼主
发表于 2016-5-2 12:14:48 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
容器.zip (24.81 KB, 下载次数: 0)

vector 与 set区别 .
  1. 首先,vector是序列式容器而set是关联式容器。set包含0个或多个不重复不排序的元素。也就是说set能够保证它里面所有的元素都是不重复的。另外对set容器进行插入时可以指定插入位置或者不指定插入位置。如insert(v.begin(),1),也可以直接用insert(1)。还有一点是

  2. set对一些操作符没有进行重载,如<

  3. 下面是举个例子:

  4. #include <iostream>
  5. #include <list>
  6. #include <vector>
  7. #include <deque>
  8. #include <set>
  9. using namespace std;
  10. int main(void)
  11. {
  12.     vector<int> v;
  13.     v.insert(v.begin(),1);  //如果使用insert(1)不指定插入位置,会出错
  14.     v.insert(v.begin(),2);
  15.     v.insert(v.begin(),1);
  16.     v.insert(v.begin(),3);
  17.     vector<int>::iterator vp = v.begin();
  18.     for(vp = v.begin();vp < v.end(); vp++)
  19.         cout << *vp << endl;
  20.     return 0;
  21. }

  22. 运行程序输出的结果是:
  23. 3
  24. 1
  25. 2
  26. 1


  27. #include <iostream>
  28. #include <list>
  29. #include <vector>
  30. #include <deque>
  31. #include <set>
  32. using namespace std;
  33. int main(void)
  34. {
  35.     set<int> v;
  36.     v.insert(v.begin(),1);
  37.     v.insert(v.begin(),2);
  38.     v.insert(v.begin(),1);
  39.     v.insert(v.begin(),3);
  40.     set<int>::iterator vp = v.begin();
  41.     //for(vp = v.begin();vp < v.end(); vp++)  //如果使用这句会出错,因为set容器对<没有重载
  42.     while(vp!=v.end())
  43.         cout << *vp++ << endl;
  44.     return 0;
  45. }

  46. 运行后结果是:
  47. 1
  48. 2
  49. 3
  50. 也就是说,set容器对有重复的元素只取其中的一个。
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|firemail ( 粤ICP备15085507号-1 )

GMT+8, 2024-11-23 15:19 , Processed in 0.064567 second(s), 23 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表