说我有以下代码
class Car {
public:
string color;
string name;
Car(string c, string n): color(c), name(n){}
}
int main() {
vector<Car> collection1;
vector<Car> collection2;
collection1.emplace_back("black", "Ford");
collection1.emplace_back("white", "BMW");
collection1.emplace_back("yellow", "Audi");
//Question comes here
collection2.push_back(collection1[0]);
}
Run Code Online (Sandbox Code Playgroud)
现在我相信这是一个深刻的副本collection1[0].我尝试过使用collection2.emplace_back(move(collection1[0])),但随后数据字段collection1[0]将消失.我只想让这个"黑色福特"存在于两个向量中,并且通过任一向量对这个特定对象所做的更改将反映在两个向量上.
我猜测对于真实对象的向量,此向量的元素占用实际内存.因此,元素collection1必须独立于任何元素collection2.我认为最简单的方法是让collection1和collection2成为指针的向量并指向相同的向量Car.但是有没有可能的方法使上面的代码工作,而不使用指针向量.我最终希望将这两个集合返回到前一个函数,因此制作指针向量是没有意义的.
简而言之,我想List.append()在python中模拟该方法.
collection1 = [Car("black", "Ford"),Car("white", "BMW"),Car("yellow", "Audi")]
collection2 = []
collection2.append(collection1[0])
collection2[0].color = "blue" // This affects collection1 as well
Run Code Online (Sandbox Code Playgroud)