我想创建一个程序,提示用户输入矢量的大小,然后将该大小应用于矢量(填充随机数)。这是我到目前为止所做的,但我不知所措。在这个网站上有一个类似的问题,但由于过于含糊而被关闭了。如何根据用户输入的数字创建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;
}
答案 0 :(得分:1)
这是一种方式:
std::cin
从用户处获取一个号码,并将其存储在int
或最好std::vector<int>::size_type
中。我们将此号码称为n
。n
次,每次调用rand()
,push_back
结果进入std::vector<int>
请注意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>
)