在STL向量中推送元素,但在使用“ at”时找不到

时间:2019-04-24 14:47:18

标签: vector stl c++98

我正在尝试做一个非常简单的操作,将一个整数添加到向量中并将其删除。但是,当我使用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

不确定为什么这种简单的用法不起作用。

1 个答案:

答案 0 :(得分:1)

“ At”期望接收元素的位置,而不是实际值。

https://en.cppreference.com/w/cpp/container/array/at