二维vector初始化,赋值

一。二维vector初始化

1. 采用构造函数 vector<vector<int>> vec(10, vector<int>(8)); //10行8列,全部初始化为零

2.添加元素(每次添加一行)

int a[] = { 1, 2, 3, 4 };

vector<int> ivec(a, a + 4);//数组初始化vector,见最下面(也可以不用数组初始化,直接{}初始化vector)

vector<vector<int> > m;

m.push_back(ivec);

ivec[0] = 5;

ivec[1] = 6;

ivec[2] = 7;

ivec[3] = 8;

m.push_back(ivec);

ivec[0] = 9;

ivec[1] = 10;

ivec[2] = 11;

ivec[3] = 12;

m.push_back(ivec);

ivec[0] = 13;

ivec[1] = 14;

ivec[2] = 15;

ivec[3] = 16;

m.push_back(ivec);

3.直接初始化

vector<vector<char>> board = {{'X','.','.','X'},{'.','.','.','X'},{'.','.','.','X'}};

二。使用数组来初始化 vector 对象

只需要 指明拷贝区域的首元素地址和尾后地址就可以了,下面通过两组程序及其运行结果来深入理解一下:

程序一:

  1. #include <iostream>
  2. #include <vector>
  3. #include <iterator>
  4.  
  5. int main()
  6. {
  7. int arr[] = {11, 32, 41, 25, 67, 100, 88, 233}; // 列表初始化内置数组
  8. // 指出拷贝区域范围,使用数组初始化 vector 对象
  9. vector<int> iv(begin(arr), end(arr));
  10.  
  11. for (auto c : iv) // 输出 vector 对象的内容以验证结果
  12. cout << c << ' ';
  13. cout << endl;
  14.  
  15. return 0;
  16. }

程序一的运行结果为:

11 32 41 25 67 100 88 233,与期望中完全一致

程序二:

  1. #include <iostream>
  2. #include <vector>
  3. using std::vector;
  4. using std::cout;
  5. using std::endl;
  6.  
  7. int main()
  8. {
  9. int arr[] = {11, 32, 41, 25, 67, 100, 88, 233}; // 列表初始化内置数组
  10. // 指出拷贝区域范围,使用数组初始化 vector 对象
  11. vector<int> iv(arr + 2, arr + 7);
  12.  
  13. for (auto c : iv) // 输出 vector 对象的内容以验证结果
  14. cout << c << ' ';
  15. cout << endl;
  16.  
  17. return 0;
  18. }

程序二的运行结果为:

41 25 67 100 88,与期望中完全一致

需要特别注意的是, vector 对象不能用来初始化数组 ,这个过程是不可逆的。

三。

vec.size()是行数

vec[0].size()是列数

for (int i =0;i<vec.size();++i)

{

for (int n = 0; n<vec[0].size();++n)

{

cout << vec[i][n] << " ";

}

cout << endl;

}

猜你喜欢

转载自blog.csdn.net/sinat_41852207/article/details/86668954
今日推荐