如何创建具有用户定义大小的矢量?

How do I create a vector with a user defined size?

我想创建一个程序,提示用户输入向量的大小,然后将该大小应用到向量(用随机数填充)。这是我到目前为止所拥有的,但我很茫然。该站点上有一个类似的问题,但由于过于模糊而被关闭。如何根据用户输入的数字创建 x 个 data.push_back 实例?

int main()
{
    srand(time(NULL));

    data.push_back(rand()%10+1);

    for (int i=0; i<data.size(); i++)
    {
        cout<<"Vector: "<<i<<" "<<data[i]<<endl;
    }
    return 0;
}

这是一种方法:

  1. 使用 std::cin 从用户那里获取一个号码并将其存储在 int 或最好是 std::vector<int>::size_type 中。我们称这个号码为 n.
  2. 循环 n 次,每次调用 rand(),并将结果 push_back 放入您的 std::vector<int>

请注意 std::vector<int> 是一个动态容器,它的大小可以在运行时改变。在您的情况下,您不必在编译时指定它的大小。

如果您必须使用 push_back

,您可以执行以下操作
main()
{
int n;
cin >> n;
vector<int> data;   
srand(time(NULL));

for (int i = 0 ; i < n; i++)
{
        data.push_back(rand()%10+1);
}
for (int i=0; i<data.size(); i++)
{
cout<<"Vector: "<<i<<" "<<data[i]<<endl;
}
return 0;
}

也可以预分配整个vector,效率更高

main()
{
int n;
cin >> n;
vector<int> data(n);    
srand(time(NULL));

for (int i = 0 ; i < n; i++)
{
    data[i] = rand()%10 + 1;
}
for (int i=0; i<data.size(); i++)
{
cout<<"Vector: "<<i<<" "<<data[i]<<endl;
}
return 0;
}

你可以选择:`

srand(time(NULL));
std::vector<int> data;
int x;
std::cin>>x;
data.resize(x);
std::generate(data.begin(), data.end(), [](){return rand()%10+1;});

for(auto& num : data)
   std::cout<<num<<std::endl;`

或者,如果您还想显示索引:

for (int i=0; i<data.size(); i++)
    cout<<"Vector: "<<i<<" "<<data[i]<<endl;

确保包含适当的 headers(<cstdlib><vector><algorithm>