gpt4 book ai didi

c++ - 通过多次迭代创建随机大小(在一定范围内)的数组

转载 作者:行者123 更新时间:2023-11-28 05:49:53 25 4
gpt4 key购买 nike

我正在尝试创建许多由随机数组成且大小在 1 到 20 个元素之间的随机数组。我的代码有时有效。

我正在使用所需范围之间的随机数来确定数组大小。例如,如果第一次迭代产生一个大小为 10 的数组,那么出于某种原因我的代码不想创建任何大小大于 10 的数组。将创建各种数组(并输出这些数组的列表)直到某个迭代产生一个大于 10 的随机数。然后我得到这个错误:

Array index out of range numbers->[11] valid upto numbers[9]

"numbers"是数组的名称。这是我的代码的相关部分:

srand(time(0));
int j, flag = 0;
int temp;
int rand=1;

for(int t=0; t<50; t++)
{
int length = rand()% 20 + 1;
cout<<"length is " << length << endl;
int numbers[length];

for(int i = 0; i < length; i++)
{
numbers[i]=rand();
cout << numbers[i] << endl;
}

for(j=0; (j<=length); j++)
{
for (int i=0; i<(length-1); i++)
{
if(numbers[i+1]<numbers[i])
{
temp=numbers[i];
numbers[i]=numbers[i+1];
numbers[i+1]=temp;
flag++;
}
}
}

cout << "Number of Swaps : " << flag << endl;
}

最佳答案

正如@Bob__ 所写,分配可变长度数组不是 C++ 标准。它有时可能适用于特定的编译器,但它可能会破坏其他编译器。

但也有不错的选择。您可以使用 new 分配动态内存.例如:

int *array = new int[size];
array[0] = 3;
array[1] = 5;
cout << array[1];
delete [] array;

不要忘记使用 delete 删除内存然后。

或者您可以使用 vector<int> .它是一个 STL 容器,正是为此目的而制作的。

#include <vector>
using namespace std;
...
vector<int> vec(size);
vec[0] = 3;
vec[1] = 5;
cout << vec[1];

关于c++ - 通过多次迭代创建随机大小(在一定范围内)的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35473569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com