Я пытаюсь сделать что-то действительно простое, добавить целое число к вектору и удалить его.Но когда я использую at
, чтобы определить, был ли вставлен элемент, генерируется исключение.
class Obj
{
...
private:
std::vector<unsigned int> elements;
}
void Obj::addElement(unsigned int elt)
{
elements.push_back(elt);
printElements();
}
void Obj::removeElement(unsigned int elt)
{
try
{
printElements();
elements.at(elt);
}
catch (const exception& ex)
{
cout << "NOT FOUND" << endl;
return;
}
elements.erase(std::remove(elements.begin(), elements.end(), elt, elements.end());
}
void Obj::printElements()
{
for(vector<unsigned int>::iterator i = elements.begin(); i != elements.end();++i)
{
cout << *i << endl;
}
}
Передача 5
скажем ... obj.addElement (5);obj.removeElement (5);
printElements
всегда печатает то, что вы ожидаете.Но в removeElement
всегда генерируется исключение, и 5
никогда не удаляется.
Не уверен, почему это простое использование не сработает.