c++ - 通过赋值运算符插入索引处的 std::vector

标签 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.

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

最佳答案

myVector[x] = o;

只有当 x < myVector.size() 时它才是明确定义的.否则,它会调用未定义的行为,因为在这种情况下,它会尝试访问 vector 边界之外的元素。

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

myVector.at(x) = o;

现在它会抛出 std::out_of_range如果 x >= myVector.size() 则异常(exception).所以你必须把这段代码放在try-catch中堵塞!此处详细讨论了它们之间的区别。

关于c++ - 通过赋值运算符插入索引处的 std::vector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12204206/

相关文章:

c++ - 为什么此代码在使用可变数组大小时不会生成错误?

c++ - OPENCV:image_proc 中的 PCA 应用程序错误

c++ - 将一个 vector 拆分为 n 个子 vector (反弹)

c++ std vector - 无效的迭代器问题

c++ - 通用 Controller 的优雅方式(基于 GUI 的应用程序)

c++ - 使用 c++17 的弱绑定(bind)

c++ - 将 std::map 复制到成对的 std::vector 中

c++ - 使用算法删除 vector 中的特定元素

c++ - 使优先级队列限制其在 C++ 中的内存

c++ - 后续:从 std::vector 中删除项目