我有一个大小为 50 的 vector , vector 内部有 5 个对象。我想复制这 5 个对象的所有内容,并用它们填充 vector 的其余部分。
下面的内容完全复制了对象(i=5 是因为我忽略了前 4 个 vector 元素)。
for (int i = 5; i <= CParams::iNumBirds; i++){
m_vpDisplayableObjects[i + 5] = m_vpDisplayableObjects[i];
}
但问题是我想给每个对象一个不同的 ID,0-50。见下文
for (int i = 0; i < CParams::iNumBirds; i++) {
m_pMainEngine->GetDisplayableObject(i + 5)->ObjectID = i;
}
很明显,因为它们是拷贝,每 5 个元素重置 ObjectID,所以最后所有对象的 ID 都是 45-50 而不是 0-50。
我的问题是,如何创建这些对象的拷贝,同时为每个对象赋予不同的 ObjectID?
最佳答案
您可以创建一个函数,将复制对象的属性值复制到新对象,并将新对象的 ID 作为参数传递。
Obj copy(Obj& obj, int id) {
Obj newObj();
// copy atributes
newObj.attribute1 = obj.attribute1;
//...
newObj.ObjectID = id;
return newObj;
}
然后在for循环中调用这个函数
for (int i = 5; i <= CParams::iNumBirds; i++){
m_vpDisplayableObjects[i + 5] = copy(m_vpDisplayableObjects[i], i + 5);
}
关于c++ - 创建重复对象的 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49599291/