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

2024-12-23 18:15:03
推荐回答(3个)
回答1:

不会有影响,这是两份独立的拷贝。【任何Windows和Linux环境下】【所有的c++的编译器】都是这样的,因为C++标准库是这样定义的,所以任何编译器在实现标准库的时候都会遵守这条规则

回答2:

没有,这个=重载了拷贝构造,直接把里面的内容全部复制过去了。

回答3:

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

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

因此插入的时候只需要稍做变换,把节点的指针指向新的节点就可以了。删除的时候类似,稍做变换后把指向删除节点的指针指向其他节点也OK了。这里的一切操作就是指针换来换去,和内存移动没有关系。