C++ 将对象数组推回向量c++;

C++ 将对象数组推回向量c++;,c++,C++,我有一个类,它接受一个数组并在随机位置用相同的数字重新填充数组。 我现在需要生成一个列表,生成10个随机数组列表,我相信我已经完成了。 我通过创建一个类对象数组来实现这一点,如代码中所示 class numbers{ private: int indexCount; public: void swap (int *a, int *b) { int temp = *a; *a = *b; *b = temp; } v

我有一个类,它接受一个数组并在随机位置用相同的数字重新填充数组。 我现在需要生成一个列表,生成10个随机数组列表,我相信我已经完成了。 我通过创建一个类对象数组来实现这一点,如代码中所示

class numbers{
    private:
    int indexCount;

    public:
    void swap (int *a, int *b)  
{  
    int temp = *a;  
    *a = *b;  
    *b = temp;  
}  
void printArray (int arr[], int n)  
{  
    for (int i = 0; i < n; i++)  
    cout << arr[i] << " ";  
    cout << "random calls: " << indexCount <<endl; 

}  
  void randomize (int arr[], int n)  
{  

   indexCount=0;
    for (int i = n - 1; i > 0; i--)  
    {  
        int j = rand() % (i + 1);  
        indexCount++;
        swap(&arr[i], &arr[j]);  

    }  
}


};

       int main()
       {

        srand (time(NULL));
        vector <int> list;

            int i;
            int arr[] = {1, 2, 3, 4, 5, 6, 0, 0, 0};  
            int n = sizeof(arr) / sizeof(arr[0]);  
           numbers a[10]; 
            for (i=0; i <10;i++)
            {
            a[i].randomize(arr,n);
            a[i].printArray(arr,n); 
        //  list.push_back(a[i]);

            }


return 0;


       }
类号{
私人:
int indexCount;
公众:
无效交换(int*a,int*b)
{  
int temp=*a;
*a=*b;
*b=温度;
}  
无效打印数组(int arr[],int n)
{  
对于(int i=0;icout不能使用标准数组(如
int A[10]
)对向量进行模板化。可以使用指针(如
int*
)对向量进行模板化,也可以使用另一个
std::vector
对向量进行模板化

如果您有一个数组,并且希望将该数组的值存储在向量的单个索引中,则需要将数组的元素复制到向量中的容器中。对于
std::vector
,如下所示:

    std::vector<int*> array_vec;
    int numbers[] = {1, 2, 3, 4, 5, 6, 0, 0, 20};
    for (std::size_t i = 0; i < 10; i++)
    {
        int* temp = new int[sizeof(numbers)/sizeof(numbers[0])];
        std::copy(&numbers[0], &numbers[9], temp);
        array_vec.push_back(temp);

        // change numbers so that it's different and we can see that reflected in the output
        numbers[8] = i;
    }

    // print the elements from the vector
    for (auto a : array_vec)
    {
        std::cout << "{ ";
        for (std::size_t i = 0; i < 9; i++)
        {
            std::cout << a[i] << " ";
        }
        std::cout << "}\n";
    }

    // we need to delete the memory we allocated
    for (auto a : array_vec)
        delete[] a;
注意:现在不需要手动
删除[]
内存,因为
std::vector
为我们管理内存


这个答案并没有解决你问题中的问题。如果你有问题的话,你必须用另一个问题来回答


如果您对
std::vector
类、其构造函数或其成员函数有疑问,请参阅。

Hi@elie1,欢迎来到Stackoverflow。如果您还没有,请阅读。您的问题似乎缺少一个问题。您的代码是否编译?如果是,它是否生成正确的输出?请包含一个示例输入,预期输出和实际输出。如果是调试问题,请阅读。谢谢john,我现在将编辑我的问题,因此您希望向量中的每个元素都包含自己的数组。如果每个向量都包含自己的向量,您是否可以接受?向量比数组好,除非您正在编写非常高速的低级代码,否则y你应该在数组上使用向量。是的,这是一个uni任务,他们要求将数字存储到数组中,然后生成10次列表并将其存储到单个向量中。所以我想如果我可以创建一个包含每个列表的对象,然后将该对象传递到work@elie1你的目标不存在不过,您不需要包含列表。您需要
arr
才能成为该类的成员。
    std::vector<std::vector<int>> vector_vec;
    int numbers[] = {1, 2, 3, 4, 5, 6, 0, 0, 20};
    for (std::size_t i = 0; i < 10; i++)
    {
        // create a new std::vector<int> in vector_vec by calling its iterator constructor
        vector_vec.emplace_back(numbers, numbers + 9);

        numbers[8] = i;
    }

    // print the elements from the vector
    for (auto& v : vector_vec)
    {
        std::cout << "{ ";
        for (auto i : v)
        {
            std::cout << i << " ";
        }
        std::cout << "}\n";
    }