为什么我无法使用向量读取二维数组?
Why am I unable to read 2D array using vectors?
密码是:
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<vector<int>> arr;
int i, j;
for (i = 0; i < 5; i++)
{
for (j = 0; j < 5; j++)
{
cin >> arr[i][j];
}
}
return 0;
}
编译成功。但是,当我尝试 运行 Visual Studio (2013) 中的代码时,我得到了 运行 时间错误“向量下标超出范围”。
为什么我会收到这个 运行 时间错误?这是从用户读取二维数组输入的正确方法吗?
因为向量 arr 在您的代码中是空的。
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<vector<int>> arr;
cout << arr.size() << endl; // output: 0
cout << arr.empty() << endl; // output: 1 , it means arr is empty
// First way
vector<vector<int>> arr1(5, vector<int>(5));
int i, j;
// Second way
arr.resize(5);
for (i = 0; i < 5; i++) {
for (j = 0; j < 5; j++) {
int temp;
cin >> temp;
arr[i].emplace_back(temp);
}
}
return 0;
}
密码是:
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<vector<int>> arr;
int i, j;
for (i = 0; i < 5; i++)
{
for (j = 0; j < 5; j++)
{
cin >> arr[i][j];
}
}
return 0;
}
编译成功。但是,当我尝试 运行 Visual Studio (2013) 中的代码时,我得到了 运行 时间错误“向量下标超出范围”。
为什么我会收到这个 运行 时间错误?这是从用户读取二维数组输入的正确方法吗?
因为向量 arr 在您的代码中是空的。
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<vector<int>> arr;
cout << arr.size() << endl; // output: 0
cout << arr.empty() << endl; // output: 1 , it means arr is empty
// First way
vector<vector<int>> arr1(5, vector<int>(5));
int i, j;
// Second way
arr.resize(5);
for (i = 0; i < 5; i++) {
for (j = 0; j < 5; j++) {
int temp;
cin >> temp;
arr[i].emplace_back(temp);
}
}
return 0;
}