У меня есть несколько классов и несколько векторов, содержащих несколько объектов каждого типа. Для простоты я просто расскажу об одном. Поэтому у меня есть:Удаление объектов из вектора по заданному индексу
class Multiple : public Question {
public:
//Member functions here
private:
int num_choices;
string correct;
vector<string> choices;
};
Он также наследует несколько элементов данных, int points;
, int chapter;
и string prompt;
.
У меня есть vector<Multiple> mcq;
для хранения нескольких объектов класса (не динамически выделенных). Но теперь мне нужно иметь возможность удалять объект по заданному индексу, я пробовал только mcq.erase(index)
, но с помощью Visual Studio 2012 он дает ошибку Error: no instance of overloaded function "std::vector<_Ty, _Alloc>::erase [with _Ty=Multiple, _Alloc = std::allocator<Multiple>]" matches the argument list argument types are: (int) object type is: std::vector<Multiple, std::allocator<Multiple>>
, и я понятия не имею, что это значит или как его исправить.
Заранее благодарю за любую помощь.
try mcq.erase (mcq.begin() + index); –
erase хочет итератор http://www.cplusplus.com/reference/vector/vector/erase/ –
Если у вас есть сомнения, посмотрите [хорошую ссылку] (http://en.cppreference.com/w/cpp/ контейнер/вектор/стирание). – juanchopanza