gpt4 book ai didi

c++ - 在 vector 中删除/更新结构值时出现编译错误?

转载 作者:行者123 更新时间:2023-11-28 03:07:17 24 4
gpt4 key购买 nike

我已经在 vector 中插入了结构值,现在我想删除/更新特定结构。

我试过这样的:定义结构

struct _Data
{
std::string sPath;
unsigned short *id;
UINT nValue;

};

定义一个 vector

vector<struct _Data> vDATA;

现在在 main 方法中插入 vector 中的值。

struct _Data Record;
vDATA.push_back(Record);

我已经插入了 n 个数值。现在我试图从 vector 中一个一个地获取结构中的 id,并使用不同的 id 进行更新。我试过:

for(int i = 0; i< vDATA.size(); i++)
{
Record = vDATA[i];
std::string sTempPath = Record.sPath;
UINT nTemp = Record.nValue ;
std::wstring sTemp = Record.id;

现在更新ID的值:

Record.id = <different value>
vDATA.erase(i);
vDATA.push_back(Record);

编译时它生成错误“struct Data *_th​​iscall std::vector >::erase(struct _Data *)”:无法将参数 1 从“int”转换为“struct _Data”

任何建议,我做错了。

谢谢

最佳答案

vector 中的删除采用迭代器 而不是索引。此更改应该可以完成工作:

vDATA.erase(vDATA.begin() + i);

上面的代码采用迭代器指向 vector 中索引为 i 的元素,然后为它调用删除。

关于c++ - 在 vector 中删除/更新结构值时出现编译错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19375789/

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