Как дописать удаление из выражения? С++
#include <vector>
#include <cstring>
#include <iostream>
#include <Windows.h>
using namespace std;
struct PredmUk
{
char Name[30];
int Nomer;
};
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
char name[12]{};
int n, k;
char t;
cout << "Формирование предметного указателя:";
cout << endl;
cout << "Введите размер предметного указателя <10:" << endl;
cin >> n;
while (n < 1 || n>10)
{
cout << "! Ошибка ! Введите размер предметного указателя МЕНЬШЕ 10" << endl;
cin >> n;
}
vector<PredmUk> v(n);
for (int i = 0; i < v.size(); i++)
{
cout << "Введите слово №" << i + 1 << ": ";
cin >> v[i].Name;
cout << "Введите номер страницы: ";
cin >> v[i].Nomer;
}
cout << "Формирование завершено\nХотите просмореть предметный указатель? Введите 1\n\
Хотите просмотреть номерa страниц для заданного слова? Введите 2\n\
Хотите удалить слово? Введите 3\n";
cin >> k;
if (k == 1)
{
cout << "Вывод предметного указателя :" << endl;
for (int i = 0; i < v.size(); i++)
{
cout << "Слово: " << v[i].Name << endl;
cout << "Номер страницы: " << v[i].Nomer << endl;
}
}
if (k == 2)
{
char slovo[20];
cin.getline(slovo, 20, '\n');
for (int i = 0; i < v.size(); i++)
{
if (!strcmp(slovo, v[i].Name))
{
cout << "Слово: " << v[i].Name << endl;
cout << "Номер страницы: " << v[i].Nomer << endl;
}
}
}
system("pause");
return 0;
}
Нужно дописать удаление слова из списка. Как это сделать?
Само задание:
Описать класс «предметный указатель». Каждый компонент указателя содержит слово и номера страниц, на которых это слово встречается. Количество номеров страниц, относящихся к одному слову, от одного до десяти. Предусмотреть возможность формирования указателя с клавиатуры и из файла, вывода указателя, вывода номеров страниц для заданного слова, удаления элемента из указателя. Написать программу, демонстрирующую работу с этим классом. Программа должна содержать меню, позволяющее осуществить проверку всех методов класса.
Ответы (1 шт):
За удаление в векторах отвечают методы: erase(it) и erase(begin, end). Где первый метод получает итератор (не путайте типы, iterator != int, я просто уверен что ошибка именно в этом), а второй промежуток.
Поэтому могу вам предложить либо получить итератор элемента, либо же укажите промежуток в 1 элемент.
Подробнее можете почитать здесь.