求问关于set容器问题

Love_Generic 2010-12-14 11:47:02
C++primer里提过set容器是键的集合,而且键是唯一的且不能修改,但是程序里貌似都可以? (用的是VS2008)


#include "stdafx.h"
#include <set>
#include <iostream>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
set<int> se;
for(int i=0;i!=5;++i)
{
se.insert(i);
}

for(set<int>::iterator iter=se.begin(); iter!=se.end();++iter)
{
cout<<*iter<<" ";// 0 1 2 3 4
*iter=999; //可以通过迭代器写键的值,而且每个键的值可以相同
}

for(set<int>::iterator iter=se.begin(); iter!=se.end();++iter)
{
cout<<*iter<<" ";//999 999 999 999 999
}


return 0;
}
...全文
97 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Love_Generic 2010-12-14
  • 打赏
  • 举报
回复
这样。。可能是我对set理解有问题吧
hai040 2010-12-14
  • 打赏
  • 举报
回复
标准只是标准
编译器实现才是现实
luciferisnotsatan 2010-12-14
  • 打赏
  • 举报
回复
值改了,在set中的位置会起变化

set和map都是红黑树的实现
rainID 2010-12-14
  • 打赏
  • 举报
回复
set的键和值都是一个,一般的实现是红黑树,改变了键树会旋转,set是已序的关联容器

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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