в то время как удалить / обновить значение структуры в векторе, получая ошибку компиляции?

0

Я вставляю значение структуры в вектор, и теперь я хочу удалить/обновить определенную структуру.

Я пробовал: Определить структуру

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

Любое предложение, где я ошибся.

благодаря

Теги:
struct
vector
mfc

2 ответа

1
Лучший ответ

Стереть в векторе принимает итератор, а не индекс. Это изменение должно выполнить эту задачу:

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

Приведенный выше код принимает итератор к элементу с индексом i в векторе, а затем вызывает удаление для него.

1

Метод стирания в векторе не принимает целое число в качестве параметра. В качестве параметра принимает итератор.

См. Эту страницу для получения более подробной информации.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню