【发布时间】:2020-09-13 20:21:48
【问题描述】:
考虑以下代码和输入
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> v(n);
while(n--) {
int a, b;
cin >> a >> b;
v.push_back(a);
v.push_back(b);
}
for(auto item : v)
cout << item << " ";
cout << endl;
}
输入
2
1 2
3 4
我期望的输出
1 2 3 4
我得到的输出
0 0 1 2 3 4
我不理解 vector.push_back() 的什么行为?
【问题讨论】:
-
为什么 push_back() 会在向量的开头创建两个零
vector<int> v(n);我假设您输入了 2。跨度> -
Rubber ducky 想知道
vector在vector<int> v(n);之后有多少项 -
完全注释掉你的
while循环,看看它打印了什么。 -
vector<int> v(n);创建一个n零向量。使用vector<int> v;创建一个空向量,或将大小更改为2*n并将push_backs 替换为v[i] = ...。 -
你也可以把
vector<int> v(n);改成vector<int> v; v.reserve(n);
标签: c++