0

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

我尝试过:定义结构

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

};

定义一个向量

vector<struct _Data> vDATA;

现在在 main 方法中插入向量中的值。

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);

编译时生成错误为'struct Data * _thiscall std::vector >::erase(struct _Data *)':无法将参数1从'int'转换为'struct _Data

任何建议,我做错了。

谢谢

4

2 回答 2

1

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

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

上面的代码将迭代器带到i向量中具有索引的元素,然后为它调用擦除。

于 2013-10-15T07:46:36.677 回答
1

向量中的擦除方法不以整数为参数。它将迭代器作为参数。

有关详细信息,请参阅此页面

于 2013-10-15T07:50:54.260 回答