C++ 将对象数组推回向量c++;
我有一个类,它接受一个数组并在随机位置用相同的数字重新填充数组。 我现在需要生成一个列表,生成10个随机数组列表,我相信我已经完成了。 我通过创建一个类对象数组来实现这一点,如代码中所示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
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;i cout不能使用标准数组(如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";
}