stl问题

yinquan8241 2009-04-19 02:32:32
stl 里的容器 set 为什么插入重复的值会打印不出来
#include <iostream>
#include <set>
#include <algorithm>
using namespace std;

void main()
{
typedef std::set<int> IntSet;
IntSet coll;
IntSet::iterator pos;

coll.insert(1);
coll.insert(2);
coll.insert(2);
coll.insert(2);
coll.insert(3);
coll.insert(4);
coll.insert(5);
coll.insert(6);
coll.insert(6);
copy(coll.begin(),coll.end(),ostream_iterator<int>(cout," "));
}
只会打印出 1 2 3 4 5 6
但我插入了 1 2 2 2 3 4 5 6 6
这是为什么呢?
...全文
113 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yinquan8241 2009-04-19
  • 打赏
  • 举报
回复
谢谢各位前辈指教
mxd295 2009-04-19
  • 打赏
  • 举报
回复
set是不支持重复的值的。要插入有重复的值的用multiset.用法和set一样
tangshuiling 2009-04-19
  • 打赏
  • 举报
回复

使用可重复的容器multiset,可重复元素
wuyu637 2009-04-19
  • 打赏
  • 举报
回复
multiset<T>是一种允许出现重复元素的集合容器,和集合基本相同,但可以支持重复元素具有快速查找能力。


set<T>:由节点组成的红黑树,每个节点都包含一个元素,节点之间以某种作用于元素对的谓词排列,没有两个不同的元素能够拥有相同的次序。具有快速查找功能,但是以牺牲插入和删除操作效率为代价的。
「已注销」 2009-04-19
  • 打赏
  • 举报
回复
#include <iostream>
#include <set>
#include <algorithm>
using namespace std;

int main()
{
typedef std::multiset <int> IntSet;
IntSet coll;
IntSet::iterator pos;

coll.insert(1);
coll.insert(2);
coll.insert(2);
coll.insert(2);
coll.insert(3);
coll.insert(4);
coll.insert(5);
coll.insert(6);
coll.insert(6);
copy(coll.begin(), coll.end(), ostream_iterator <int>(cout, " "));
return 0;
}

输出就对了
qqwx_1986 2009-04-19
  • 打赏
  • 举报
回复
set是一个容器,它其中所包含的元素的值是唯一的
「已注销」 2009-04-19
  • 打赏
  • 举报
回复
可以用multiset吧
ryfdizuo 2009-04-19
  • 打赏
  • 举报
回复
set中不能重复的,
集合的特性

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧