#include <iostream>
#include <string>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;
int main() {
int n, x, y, z, xres, yres, zres;
cin >> n;
vector<vector<int>> vec(n);
while(n--) {
vector<int> aux(3);
cin >> aux.at(0) >> aux.at(1) >> aux.at(2);
vec.push_back(aux);
}
for ( int i = 0; i < vec.size(); i++ ) {
for (int j = 0; j < vec[i].size(); j++) {
cout << vec.at(i).at(j) << " ";
}
cout << endl;
}
cout << vec.at(0).at(0);
return 0;
}
为什么for循环可以工作,但是试图直接访问一个元素会产生一个超出范围的错误,说这个向量的大小是0?我认为for循环也只是把一些数字放在i和j的位置。输入是这样的:
3
1 2 3
1 2 3
1 2 3
terminate called after throwing an instance of 'std::out_of_range'
what(): vector::_M_range_check: __n (which is 0) >= this->size() (which is 0)
Aborted (core dumped)
2条答案
按热度按时间zlhcx6iw1#
创建的初始向量包含
n
个空向量:稍后,您推送
n
非空向量。在此之后,外部向量包含2 * n
向量,其中第一个n
为空。你应该用
或者是
kpbwa7wx2#
向量最初的大小为3,然后再添加三个元素。
试试这个
或者这个