可以说我有一个动态分配的对象。
如果将其插入STL vector ,是否将引用插入 vector 或该对象的拷贝?

这是一个普遍的问题。例如:

class vec {
vector<obj> vec;
void addToVec(obj a) {
    // insert a into vec
 }
  ...
  ...
  ...
 }

obj* a = new obj;
 vec* v = new vec;
 vec.addToVec(a);

如果我删除v,也会反对死亡吗?

最佳答案



复制(这意味着您的class应该是可复制的,否则会出现编译器错误)。

说明:无法在std::vector<>中分配引用。另外,这里的对象具有更广泛的意义,它可以是普通变量或指针,但是std::vector<>仅接受拷贝。

更新:在C++ 11之后,大多数标准容器使用“rvalue baed API方法”提供对象的std::move()。可能无法执行复制的地方。

09-26 22:27
查看更多