c++ - 将多个相同类型的指针添加到 vector

标签 c++ pointers vector

我有一个指针 vector ,我想在其中存储指向相同类型对象的指针

Parent * tempParent=new Parent();

vector<Parent *> parents;
for(int i=0;i<9;i++){
  tempParent.setAge(i);
  parents.push_back(tempParent);
}

这是什么意思,它将所有 parent 的年龄设置为 8 岁。有什么想法可以让他们指向不同的对象,以便他们都有不同的年龄吗? 谢谢

最佳答案

如果您想在 std::vector 中存储 9 个 Parent 对象,那么您需要创建其中的 9 个。

你有多种解决问题的方法,你可以只存储普通对象(而不是指针,因为如果你不需要它们就不必存储指针),例如:

std::vector<Parent> parents;
for (int i = 0; i < 9; ++i) {
  parents.push_back(Parent(i)); // assuming a Parent::Parent(int age) constructor
}

如果你真的想要指针,你肯定需要调用 new 9 次:

std::vector<Parent*> parents;
for (int i = 0; i < 9; ++i) {
  Parent* parent = new Parent(i);
  parents.push_back(parent);
}

请注意,如果您真的需要指针,将它们包装在 unique_ptr 中是个好主意,前提是 vector 拥有它们的所有权:

std::vector<std::unique_ptr<Parent>> parents;
parents.push_back(std::unique_ptr<Parent>(new Parent(age));

关于c++ - 将多个相同类型的指针添加到 vector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28882595/

相关文章:

c++ - 在函数外访问堆栈对象

C++ - 获取模板的类型名称,其中该类用作另一个模板

python - Python 中的伪指针功能

c++ - 为什么调整指向 vector * 的指针(在 vector * 数组中)比 vector (在 vector 数组中)更快?

c++ - 代码在 OS X 上运行,Codeblocks Vbox 中的段错误

c - 为什么ptr3的大小是2?

C - 通过 strcpy 打印 char* 行为是否矛盾?

C++ vector 和段错误

c++ - 如何创建一个 vector 作为参数

c++ - 如何正确删除 vector 中的对象