c++ - 创建重复对象的 vector ?

标签 c++ object vector

我有一个大小为 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/

相关文章:

c++ - DirectWrite:Windows 7 上的字符间距

c++ - 在 C++ 的编译过程中如何在内部表示重载函数

c++ - 为什么在 C++ 中如此频繁地使用 get/set 函数?

c++ - 使用通用 vector 大小类型的最佳方法是什么?

c++ - 我可以在多核 x86 CPU 上强制缓存一致性吗?

c++ - 为什么一个实体可以在内部范围内被重新利用? C++

c++ - 指针 vector 上的 std::find()

c++ - 包含引用另一个 vector 内容的 vector 的对象

javascript - 使用 lodash 在集合中进行通配符搜索

javascript - 如何检查变量是对象还是数组?