如何将对象的动态数组保存在单个数组中

Posted

技术标签:

【中文标题】如何将对象的动态数组保存在单个数组中【英文标题】:How to save dynamic arrays of Objects in single array 【发布时间】:2013-10-05 10:19:25 【问题描述】:

我有一些对象的动态数组(在 C++ 中)并在我的实现中使用它们。如何将这些数组存储在某个数组中。例如,

class classA
 ;

class classB 

  private:
     // Dynamic arrays, initialized in constructor
     classA *arr1 ;
     classA *arr2 ;
     classA *arr3 ;
     classA *arr4 ;

  public:
     classB() 
         // initialization
         arr1  = new classA [10] ;
         arr2  = new classA [10] ;
         arr3  = new classA [10] ;
         arr4  = new classA [10] ;
     


我想将所有这些数组保存在其他(静态或动态)数组中

【问题讨论】:

好的,我添加classB的构造函数 【参考方案1】:

只需使用std::vector,它在C++中称为动态数组,通常用作默认容器。

class classB

public:
    classB()
    : arr1(10), arr2(10), arrN(10)
    
private:
  std::vector<classA> arr1;
  std::vector<classA> arr2;
  //....
  std::vector<classA> arrN;
;

更新:

如果您有几个向量并且想要将一个添加到另一个。请参见下面的示例:

std::vector<classA> arr1;   
std::vector<classA> arr2;
// add something to arr1
// add something to arr2

arr1.insert(arr1.end(), arr2.begin(), arr2.end());

【讨论】:

请解释如何将动态数组添加到向量中,以及如何“使用索引”获取这些数组 阅读en.cppreference.com/w/cpp/container/vector,看看push_back等成员函数 不,我必须使用动态数组来实现“堆栈”。我已经实现但想将所有这些数组保存在一个数组中。我必须稍后使用索引访问所有动态数组 只有一个向量,然后调用 std::vector::insert 将其他向量添加到末尾?

以上是关于如何将对象的动态数组保存在单个数组中的主要内容,如果未能解决你的问题,请参考以下文章

如何使用动态索引更新对象数组?

如何将获取的 iCloud 数据对象保存到单个数组中?

如何在 xCode 中保存 UIimages 数组(swift)

用于保存子对象的父类对象的动态数组

如何将带有对象的数组中的数据动态添加到嵌套数组中?

如何将动态位置数据加载到字典对象/数组中?