首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用距离环将输入输入到矢量中

利用距离环将输入输入到矢量中
EN

Stack Overflow用户
提问于 2021-06-23 07:19:43
回答 1查看 984关注 0票数 0

首先,我想让我的用户告诉我他要输入多少个数字?它将创建初始化为零的向量中的元素数。然后,我想使用for-range循环将元素插入到向量中,类似地,使用另一个for-range循环来显示向量元素。

代码语言:javascript
复制
#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;
}

但是我的产出和我的预期很不一样。

我的实际产出如下:

产出:-

代码语言:javascript
复制
3
4
5
6
0 0 0 4 5 6 

谁能解释一下吗?我能用一个for-range循环来插入向量元素吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-23 07:23:00

std::vector有两个尺寸。一种是实际使用的尺寸,另一种是预留尺寸。

下面创建一个具有实际大小n的向量.

代码语言:javascript
复制
std::vector<int> v(size_type n)

当这创建一个空大小和保留大小的向量时,n

代码语言:javascript
复制
std::vector<int> v;
v.reserve(n);

std::vector<T>::push_back()在最后将实际大小增加1。

所以你的代码是

  1. 用实际大小的c创建一个向量.
  2. 在后面添加元素。

因此,您应该将代码替换为

代码语言:javascript
复制
std::vector<int> vec(c);
for(auto& i : ivec){
  cin>>i;
}

这将创建一个大小为vectorc,并修改其元素。

代码语言:javascript
复制
std::vector<int> vec;
for(int i=0; i<c; ++i) {
  int temp;
  std::cin >> temp;
  vec.push_back(temp);
}

其中,这将创建一个空的vector,并将元素推到末尾。

有关更多信息,请参见优先选择

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68095269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档