在 c++11 中,不能在向量中的第 1000 个元素之后push_back()


#include <iostream>
#include <vector>
#include <bits/stdc++.h> 
using std::vector;
using std::cin;
using std::cout;
int main(){
vector <long long> vec(2000,1);
vec.reserve(2000);
int count = 0;
vec.push_back(31);
for (int i = 0; i < vec.size(); ++i){
count ++;
}
cout << count << " " << vec.max_size() << " " << vec.at(1543) << " " << vec.at(1000);
return 0;
}

在这段代码中,我无法获得第1000个元素,即31。我得到了1,而不是它。对于索引小于1000的元素,我可以使用push_back((。

提前感谢

由于这个构造函数,第1000个元素实际上只是1

vector <long long> vec(2000,1);  // fill with 2000 elements, each set to 1

然后在这条线路之后

vec.push_back(31);  // element [2000] is now 31

因此,您的最终矢量是

{1, 1, 1, ..., 1, 1, 31}     // length 2001 elements

最新更新