c++ - 将对象从 vector 传递到另一个类

标签 c++ vector

我有 3 个类:

class User{
}

class Main{
public:
   void AddClash(){
       clash.push(Clash(...))
   }
private:
   std::vector<User> users;
   std::vector<Clash> clash;
}

class Clash{
public:
   //constructor
private:
   std::array<...,2> users;
}

我想在 Main 类中有一个方法,它将创建一个 Clash 对象,该对象的字段指向 std::中的两个对象: vector usersMain 类中。

这样做的正确方法是什么(指针、std::reference_wrapper、std::shared_ptr,...)?

最佳答案

您将面临 std::vector 的问题在需要增长时替换其内容,使过程中的任何指针、引用或迭代器失效。

因此,除非您确定不会将任何内容推送到您的 users 中 vector 同时 Clash es 还活着,你需要:

  • 在 vector 中保留一个索引 ( std::size_t )。但是您还需要对 vector 本身的引用,因此您可以通过 vec[idx] 访问您的对象。 .

  • 添加一个间接寻址:make users一个std::vector<std::unique_ptr<User>> (或 shared_ptr ,取决于您的设计)。然后 User物体本身永远不会移动。

关于c++ - 将对象从 vector 传递到另一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34100058/

相关文章:

c++ - 如何将 std::array 转换为 std::tuple?

c++: 将 vector<char> 转换为 double

c++ - 使用 getline 拆分字符串并检查 int

c++ - 根据两个值对 STL vector 进行排序

c++ - Eigen在ios项目中的使用

r - 将矩阵转换为 R 中的向量数

c++ - Boost tread 代码在 VC++ 下编译但在 GCC 下不编译 : how to get better debug info

c++ - 在 C++ 中创建具有按引用调用返回值的类函数

c++ - 在非标准化坐标中绘制 - glFrustum

C++ 事件驱动的 json 流阅读器