在矢量中插入元素时,请避免复制参数
Avoid copying of argument when inserting elements into a vector
这个问题简单而简短,但我还没有找到一个好的解决方案:我应该如何将对象插入std::vector
很明显,我可以做vec.push_back(MyObject(param1, param2, param3))
。但是,考虑到按值调用并因此复制MyObject
,这是一个合理的解决方案吗?(如果对象较大或无法复制。)
我还想知道在新构建和插入的对象上返回指针是否是保存操作。
使用C++11,您可以使用vector::emplace_back()
就地构造对象。
相关文章:
- 当从函数参数中的临时值调用复制构造函数时
- 如果有一个模板构造函数只有一个泛型参数,为什么我必须有一个复制构造函数
- 为什么默认复制函数在按值发送参数时不调用?
- std::p ackaged_task 应该删除带有 const 参数的复制 c'tor
- 将参数传递给泛型 lambda 时复制构造函数不正确
- 如何确定捕获不可复制参数的 lambda 的类型?
- 复制 avcodec 参数
- 从函数参数 [C++] 复制整数数组
- 候选构造函数(隐式复制构造函数)不可行:第一个参数需要 l 值
- 将参数的省略复制为返回值
- 可变参数宏:无法通过"..."传递非平凡可复制类型的对象
- 复制构造函数参数为0
- 函数指针,可以采用具有常量引用或复制参数的函数
- 标准::函数复制参数
- 使用 std::string 参数和不可移动/可复制参数构建 std::map
- 在矢量中插入元素时,请避免复制参数
- 无意中复制参数
- std::bind 和 std::thread 总是复制参数背后的基本原理是什么?
- std::带可移动、不可复制参数的线程
- boost::bind()是否通过引用或值复制参数