标准容器,特别是vector,经常会被"传值".
vector<string> v1 = v2;
这个行为其实是蛮恐怖的,调用了vector的拷贝构函数.
STL容器的拷贝构造函数应该都是"深复制".
以vector,它内部的cellnum是已知的,只需要先克隆一个够用的vector,然后逐个的对每个元素做拷贝构造到新的vector上去就行了.
乃至vector<vector<string>>之间的拷贝都是完整的,拷贝完两者就不再依赖.
要求具体的element(数组元素)也支持"深"的拷贝构造.
另外还有一种写法是:
vector<string> v1(v2);
这样本质一些.
原文:https://www.cnblogs.com/xiang-yin/p/12056542.html