gpt4 book ai didi

c++ - 挣扎着将新内容分配给 vector 的指针

转载 作者:行者123 更新时间:2023-11-28 05:29:23 25 4
gpt4 key购买 nike

好的,所以我要做的是将类的实例添加到 vector 的特定索引。该索引可以是最初不存在的,也可以是已清除的现有索引,并且正在将新类实例写入该位置。

下面是我一直用来尝试将这些实例写入 vector 的函数,在底部的注释中你可以看到我尝试使用的其他 2 种方法,显然 push_back 只能添加新 vector 在最后。

我有一种感觉,assign 可能只能向现有元素添加数据?并且该插入可能会添加一个新元素并将现有元素向下移动而不是覆盖。只是想清楚一点,因为 C++ 教程已经开始让我感到困惑。

此外,引用/取消引用/调用 Person vector (在本例中称为“allthePeople”)的正确方法是什么,以便可以更改其数据?

void createnewPerson(int assignID, RECT startingpoint, vector<Person>* allthePeople, int framenumber) {
Person newguy(assignID, startingpoint, framenumber);

std::cout << "New Person ID number: " << newguy.getIDnumber() << std::endl;
std::cout << "New Person Recent Frame: " << newguy.getlastframeseen() << std::endl;
std::cout << "New Person Recent history bottom: " << newguy.getrecenthistory().bottom << std::endl;
int place = assignID - 1;

//This is where I am confused about referencing/dereferencing
allthePeople->assign(allthePeople->begin() + place, newguy);
//allthePeople->insert(place, newguy);
//allthePeople->push_back(newguy);
}

还要澄清一下,“place”总是比“assignID”小 1,因为 vector 位置从 0 开始,我只是想从 1 而不是 0 开始它们的 ID 号。

------------编辑:添加了 IF 循环解决了问题----------------

void createnewPerson(int assignID, RECT startingpoint, vector<Person>* allthePeople, int framenumber) {
Person newguy(assignID, startingpoint, framenumber);

std::cout << "New Person ID number: " << newguy.getIDnumber() << std::endl;
std::cout << "New Person Recent Frame: " << newguy.getlastframeseen() << std::endl;
std::cout << "New Person Recent history bottom: " << newguy.getrecenthistory().bottom << std::endl;
int place = assignID - 1;

if (allthePeople->size() > place)
{
//assuming places starts from 1 to vector's size.
(*allthePeople)[place] = newguy;
}
else
{
allthePeople->push_back(newguy);
}
}

最佳答案

assign 用于替换 vector 的全部内容。

假设你想把每个人放在一个特定的地方。然后,您可能会更好地使用 operator[] 将值放在您想要的位置,而不是使用 assign。您需要具有适当大小的 vector 。

if (allthePeople->size() >= place )
{
//assuming places starts from 1 to vector's size.
(*allthePeople)[place - 1] = newguy;
}

关于c++ - 挣扎着将新内容分配给 vector 的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39868423/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com