我已经在vector中插入了结构值,现在我想删除/更新特定的结构。
我试过像:
定义结构
struct _Data
{
std::string sPath;
unsigned short *id;
UINT nValue;
};
定义向量
vector<struct _Data> vDATA;
现在,将值插入到main方法的vector中。
struct _Data Record;
vDATA.push_back(Record);
我已插入n个数字值。现在,我尝试从向量中一一获取结构的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);
编译时,它会生成错误,如“结构数据* _thiscall std :: vector> :: erase(struct _Data *)”:无法将参数1从“ int”转换为“ struct _Data”
任何建议,我做错了。
谢谢
最佳答案
向量中的擦除采用迭代器而不是索引。此更改应该可以完成以下任务:
vDATA.erase(vDATA.begin() + i);
上面的代码将迭代器带入向量中索引为
i
的元素,然后对其进行擦除。