通过赋值运算符在索引处插入std :: vector

Pin*_*ade 5 c++ stdvector

我是C++的新手,如果这是插入std :: vector的首选方式,我很好奇

std::vector<Object_I_madeup> myVector;

   void setAt(int x, Object_I_madeup o)
        {
            myVector[x] = o;

        } // set the array location at x  to be o.
Run Code Online (Sandbox Code Playgroud)

我问,因为我看到很多关于使用的事情push_back,或者是非常令人困惑的事情insert().这种类似Java的方式有效吗?我宁愿这样做......

Naw*_*waz 10

myVector[x] = o;
Run Code Online (Sandbox Code Playgroud)

它只有在明确定义时才有明确定义x < myVector.size().否则,它会调用undefined-behavior,因为在这种情况下,它会尝试访问向量范围之外的元素.

如果你想确保它也检查越界访问,那么使用at()as:

myVector.at(x) = o;
Run Code Online (Sandbox Code Playgroud)

现在它将抛出std::out_of_range异常,如果x >= myVector.size().所以你必须把这个代码放在try-catch块中!这里将详细讨论它们之间的区别.