首先,我想让我的用户告诉我他要输入多少个数字?它将创建初始化为零的向量中的元素数。然后,我想使用for-range循环将元素插入到向量中,类似地,使用另一个for-range循环来显示向量元素。
#include<iostream>
#include<vector>
using std::cout;
using std::vector;
using std::cin;
int main(){
int c;
cin>>c;
vector<int> ivec(c);
for(int i : ivec){ //for taking input and adding it into vector
cin>>i;
ivec.push_back(i);
}
for(int i: ivec){ //displaying the vector
cout<<i<< "\t";
}
return 0;
}但是我的产出和我的预期很不一样。
我的实际产出如下:
产出:-
3
4
5
6
0 0 0 4 5 6 谁能解释一下吗?我能用一个for-range循环来插入向量元素吗?
发布于 2021-06-23 07:23:00
std::vector有两个尺寸。一种是实际使用的尺寸,另一种是预留尺寸。
下面创建一个具有实际大小n的向量.
std::vector<int> v(size_type n)当这创建一个空大小和保留大小的向量时,n。
std::vector<int> v;
v.reserve(n);std::vector<T>::push_back()在最后将实际大小增加1。
所以你的代码是
c创建一个向量.因此,您应该将代码替换为
std::vector<int> vec(c);
for(auto& i : ivec){
cin>>i;
}这将创建一个大小为vector的c,并修改其元素。
或
std::vector<int> vec;
for(int i=0; i<c; ++i) {
int temp;
std::cin >> temp;
vec.push_back(temp);
}其中,这将创建一个空的vector,并将元素推到末尾。
有关更多信息,请参见优先选择。
https://stackoverflow.com/questions/68095269
复制相似问题