Я вставляю значение структуры в вектор, и теперь я хочу удалить/обновить определенную структуру.
Я пробовал: Определить структуру
struct _Data
{
std::string sPath;
unsigned short *id;
UINT nValue;
};
Определить вектор
vector<struct _Data> vDATA;
Теперь вставьте значение в вектор в основной метод.
struct _Data Record;
vDATA.push_back(Record);
Я вставляю значение n числа. Теперь я пытаюсь получить идентификатор из структуры один за другим из вектора и обновить с другим идентификатором. Я пробовал:
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
Любое предложение, где я ошибся.
благодаря
Стереть в векторе принимает итератор, а не индекс. Это изменение должно выполнить эту задачу:
vDATA.erase(vDATA.begin() + i);
Приведенный выше код принимает итератор к элементу с индексом i
в векторе, а затем вызывает удаление для него.
Метод стирания в векторе не принимает целое число в качестве параметра. В качестве параметра принимает итератор.
См. Эту страницу для получения более подробной информации.