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++的编译器】都没有影响呢? 展开
此时修改b中的元素,会对a中的元素产生影响吗?
我用g++和vc++编译,都不会有影响,但是否【任何Windows和Linux环境下】【所有的c++的编译器】都没有影响呢? 展开
3个回答
展开全部
没有,这个=重载了拷贝构造,直接把里面的内容全部复制过去了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
大部分人说,很简单,因为对于关联容器来说,不需要做内存拷贝和内存移动。说对了,确实如此。set容器内所有元素都是以节点的方式来存储,其节点结构和链表差不多,指向父节点和子节点。结构图可能如下:
A
/ \
B C
/ \ / \
D E F G
因此插入的时候只需要稍做变换,把节点的指针指向新的节点就可以了。删除的时候类似,稍做变换后把指向删除节点的指针指向其他节点也OK了。这里的一切操作就是指针换来换去,和内存移动没有关系。
A
/ \
B C
/ \ / \
D E F G
因此插入的时候只需要稍做变换,把节点的指针指向新的节点就可以了。删除的时候类似,稍做变换后把指向删除节点的指针指向其他节点也OK了。这里的一切操作就是指针换来换去,和内存移动没有关系。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询