我已经在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的元素,然后对其进行擦除。

09-08 10:01