如何创建具有用户定义大小的矢量?
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;
}
这是一种方法:
- 使用
std::cin
从用户那里获取一个号码并将其存储在 int
或最好是 std::vector<int>::size_type
中。我们称这个号码为 n
.
- 循环
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>
)
我想创建一个程序,提示用户输入向量的大小,然后将该大小应用到向量(用随机数填充)。这是我到目前为止所拥有的,但我很茫然。该站点上有一个类似的问题,但由于过于模糊而被关闭。如何根据用户输入的数字创建 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;
}
这是一种方法:
- 使用
std::cin
从用户那里获取一个号码并将其存储在int
或最好是std::vector<int>::size_type
中。我们称这个号码为n
. - 循环
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>
)