在用devcpp編譯程序時發現,二維vector數組如果只定義的話,不指定元素個數也不進行初始化的時候會導致編譯出錯。
通常情況下,可以只提供vector對象容納的元素數量而略去初始值。此時庫會創建一個值初始化的元素初值,並把它賦給容器中的所有元素。這個初值由vector對象中元素的類型決定。
二維數組初始化方法目前有以下兩種:
第一種初始化方法(以元素類型爲int爲例)
初始化爲1:
vector<vector<int>> vec(row, vector<int> (col,1));
第二種初始化方法
初始化爲1:
vector<vector<int>> vec;
vec.resize(row);
for(int i = 0; i < vec.size(); i++) {
vec[i].resize(col);
}
for(int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
vec[i][j] = 1;
}
}
完整程序
#include <iostream>
#include <vector>
using namespace std;
void print(const vector<vector<int>> vec)
{
for(int i = 0; i < vec.size(); i++) {
for(int j = 0; j < vec[0].size(); j++) {
cout<<vec[i][j]<<"\t";
if(j == vec[0].size() - 1)
cout<<endl;
}
}
}
int main()
{
int row = 9;
int col = 9;
//vector<vector<int>> vec(row, vector<int> (col,1));
vector<vector<int>> vec;
vec.resize(row);
for(int i = 0; i < vec.size(); i++) {
vec[i].resize(col);
}
for(int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
vec[i][j] = 2;
}
}
print(vec);
}