stl中 set 和 mutiset问题

yinquan8241 2009-05-04 03:24:36
现在我定义一个set
set<int> coll1;
coll1.insert(3);
coll1.insert(1);
coll1.insert(5);
coll1.insert(4);
coll1.insert(1);
coll1.insert(6);
coll1.insert(2);
由于set不允许元素重复,所以它内部的结构会是如下


假如我定义的是mutiset<int> coll2
coll2.insert(3);
coll2.insert(1);
coll2.insert(5);
coll2.insert(4);
coll2.insert(1);
coll2.insert(6);
coll2.insert(2);
那它的结构又是怎样的呢?
...全文
172 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
liao05050075 2009-05-04
  • 打赏
  • 举报
回复
multiset和set的实现方法基本相同,只是插入元素时使用的是红黑树的insert_equal函数,而不是insert_unique,从而可将具有重复键值插入到multiset中。
一个multiset容器内部结构示例:
21
/\
/ \
10 30
/\
8 10
/ /\
5 9 19

Ps.set和multiset都是排序容器,这个试一下就知了
帅得不敢出门 2009-05-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hairetz 的回复:]
看不到图,但是set不排序好,且不重复。
mutiset 是排序好,但是可以重复、

那你的
coll2.insert(3);
coll2.insert(1);
coll2.insert(5);
coll2.insert(4);
coll2.insert(1);
coll2.insert(6);
coll2.insert(2);

就是1 1 2 3 4 5 6
[/Quote]
不同意第一点.
The C++ Set is an associative STL container that contains a sorted set of unique objects
taodm 2009-05-04
  • 打赏
  • 举报
回复
只能答不知道。因为set和multiset都没规定必须用哪种数据结构来实现。
yinquan8241 2009-05-04
  • 打赏
  • 举报
回复
yinquan8241 2009-05-04
  • 打赏
  • 举报
回复
我问得是里面的二叉树的结构是怎么样的一个构造
operatingtuzi 2009-05-04
  • 打赏
  • 举报
回复
恩 同意2楼
  • 打赏
  • 举报
回复
看不到图,但是set不排序好,且不重复。
mutiset 是排序好,但是可以重复、

那你的
coll2.insert(3);
coll2.insert(1);
coll2.insert(5);
coll2.insert(4);
coll2.insert(1);
coll2.insert(6);
coll2.insert(2);

就是1 1 2 3 4 5 6
taodm 2009-05-04
  • 打赏
  • 举报
回复
自己从begin到end挨个打印一下不就知道了。

65,210

社区成员

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

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