1. 可变数组声明时不可初始化
void func(int a,int b){int arr[a][b] = {0}; // 错误的写法// 正确的初始化方式:int arr[a][b];memset(arr,0,sizeof(arr));}
2. vector多维数组在初始化时指定大小
vector<int> arr(3);vector<vector<int>> arr(3,4); // 错误的初始化vector<vector<int>> arr;arr = vector<vector<int>>(3,4); // 错误的初始化// 正确的初始化vector<vector<int>> arr;arr = vector<vector<int>>(3,vector<int>(4));
3. 对vector进行片段截取操作
//截取前4个数std::vector<int>::const_iterator first1 = vector.begin();std::vector<int>::const_iterator last1 = vector.begin() + 4;std::vector<int> cut1_vector(first1, last1);//截取后4个数std::vector<int>::const_iterator first2 = vector.end() - 4;std::vector<int>::const_iterator last2 = vector.end();std::vector<int> cut2_vector(first2, last2);
4.快速创建或返回vector的几种方法
vector的几个构造函数:
/*code*/
返回vector
vector<int> func(){int res[2] = {1,2};return vector<int>(res,res+2);}
5.使用 ==,<,>快速比较vector元素
vector默认提供的operator<内使用了 std::lexicographical_compare 进行比较,
operator>则非operator<,依赖operator<实现。
简单说,即比较两个vector上的,每个位置上的字母,当发现不同的且字典序小的,拥有该字母的vector判定为小。
6. 快速输出 vector
把 vector 复制到 cout (ostream)
vector<string> words {"one", "two", "two", "three", "two", "two", "two"};std::copy(words.begin(),words.end(),std::ostream_iterator<string>{std::cout," "});
7. 反转 vector
vecotr<int> arr = {1,2,3};reverse(arr.begin(),arr.end()); // {3,2,1}
