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}