vector注意事项,vector subscript out of range

如下两种情况都会造成vector subscript out of range
1.未对vector初始化就直接对vector输入值

// 错误1
vector<int> vec;
cin >> vec[0];
// 错误2
vector<pair<int, int>> vec;
cin >> vec[0].first >> vec[0].second;
// 或者 cin >> vec[0].first;

原因是未初始化,初始化即可:

vector<int> vec(4);	// 根据实际情况看需要初始化多少
cin >> vec[0];

vector<pair<int, int>> vec(4);	
// 将vector初始化,vector[0]、vector[1]、vector[2]、vector[3]全初始化为(0,0)
cin >> vec[0].first >> vec[0].second;

或者直接用push_back

vector<int> vec;
int i;

cin>>i;
vec.push_back(i);



2.未对vector初始化就直接对vector赋值

vector<int> vec;
vec[1] = 3;

你可能感兴趣的:(c++,易错点,c++)