1. 可变数组声明时不可初始化

  1. void func(int a,int b){
  2. int arr[a][b] = {0}; // 错误的写法
  3. // 正确的初始化方式:
  4. int arr[a][b];
  5. memset(arr,0,sizeof(arr));
  6. }

2. vector多维数组在初始化时指定大小

  1. vector<int> arr(3);
  2. vector<vector<int>> arr(3,4); // 错误的初始化
  3. vector<vector<int>> arr;
  4. arr = vector<vector<int>>(3,4); // 错误的初始化
  5. // 正确的初始化
  6. vector<vector<int>> arr;
  7. arr = vector<vector<int>>(3,vector<int>(4));

3. 对vector进行片段截取操作

  1. //截取前4个数
  2. std::vector<int>::const_iterator first1 = vector.begin();
  3. std::vector<int>::const_iterator last1 = vector.begin() + 4;
  4. std::vector<int> cut1_vector(first1, last1);
  5. //截取后4个数
  6. std::vector<int>::const_iterator first2 = vector.end() - 4;
  7. std::vector<int>::const_iterator last2 = vector.end();
  8. std::vector<int> cut2_vector(first2, last2);

4.快速创建或返回vector的几种方法

vector的几个构造函数:

  1. /*code*/

返回vector

  1. vector<int> func(){
  2. int res[2] = {1,2};
  3. return vector<int>(res,res+2);
  4. }

5.使用 ==,<,>快速比较vector元素

vector默认提供的operator<内使用了 std::lexicographical_compare 进行比较,

operator>则非operator<,依赖operator<实现。
简单说,即比较两个vector上的,每个位置上的字母,当发现不同的且字典序小的,拥有该字母的vector判定为小。

6. 快速输出 vector

把 vector 复制到 cout (ostream)

  1. vector<string> words {"one", "two", "two", "three", "two", "two", "two"};
  2. std::copy(words.begin(),words.end(),std::ostream_iterator<string>{std::cout," "});

7. 反转 vector

  1. vecotr<int> arr = {1,2,3};
  2. reverse(arr.begin(),arr.end()); // {3,2,1}