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

时间:2015-04-11 01:24:24

标签: c++ vector

我想创建一个程序,提示用户输入矢量的大小,然后将该大小应用于矢量(填充随机数)。这是我到目前为止所做的,但我不知所措。在这个网站上有一个类似的问题,但由于过于含糊而被关闭了。如何根据用户输入的数字创建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;
}

3 个答案:

答案 0 :(得分:1)

这是一种方式:

  1. 使用std::cin从用户处获取一个号码,并将其存储在int或最好std::vector<int>::size_type中。我们将此号码称为n
  2. 循环n次,每次调用rand()push_back结果进入std::vector<int>
  3. 请注意std::vector<int>是一个动态容器,它的大小可以在运行时更改。在您的情况下,您不必在编译时指定它的大小。

答案 1 :(得分:1)

如果必须使用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;
}

您也可以预先分配整个矢量,这样效率更高。

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;
}

答案 2 :(得分: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;

确保包含相应的标头(<cstdlib><vector><algorithm>