c++ STL中的set容器再给另一个set变量赋值后,两个变量中的元素是分别储存的吗?

如set<int>a,b;.....;b=a;此时修改b中的元素,会对a中的元素产生影响吗?我用g++和vc++编译,都不会有影响,但是否【任何Windows和Linux... 如set<int> a,b;.....;b=a;
此时修改b中的元素,会对a中的元素产生影响吗?
我用g++和vc++编译,都不会有影响,但是否【任何Windows和Linux环境下】【所有的c++的编译器】都没有影响呢?
展开
 我来答
销魂在何方Z
2012-10-23
知道答主
回答量:7
采纳率:0%
帮助的人:8.3万
展开全部
不会有影响,这是两份独立的拷贝。【任何Windows和Linux环境下】【所有的c++的编译器】都是这样的,因为C++标准库是这样定义的,所以任何编译器在实现标准库的时候都会遵守这条规则
帅得有点坏
2012-10-23 · TA获得超过1149个赞
知道小有建树答主
回答量:463
采纳率:0%
帮助的人:475万
展开全部
没有,这个=重载了拷贝构造,直接把里面的内容全部复制过去了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
悦文斓月
2015-07-22 · 历史爱好者 法律顾问
悦文斓月
采纳数:505 获赞数:11896

向TA提问 私信TA
展开全部
大部分人说,很简单,因为对于关联容器来说,不需要做内存拷贝和内存移动。说对了,确实如此。set容器内所有元素都是以节点的方式来存储,其节点结构和链表差不多,指向父节点和子节点。结构图可能如下:

  A
  / \
  B C
 / \ / \
D E F G

因此插入的时候只需要稍做变换,把节点的指针指向新的节点就可以了。删除的时候类似,稍做变换后把指向删除节点的指针指向其他节点也OK了。这里的一切操作就是指针换来换去,和内存移动没有关系。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式