VECTOR 错误总结
#include<iostream>
#include<vector>
using namespace std;
const int n=5;
int main(){
vector<int>vec1;
for(int i=0;i<n;i++)
vec1.push_back(i);
vector<int>::iterator it1;
int i=0;
for(it1 = vec1.begin() ; it1 != vec1.end() ; it1++ , i++ )
cout<< vec1[i] <<' '; // [0 1 2 3 4]
for(it1 = vec1.begin() + 1 ; it1 != ((const vector<int> &)vec1).cend() ; it1++ )
cout<< *it1 <<' '; // [1 2 3 4]
// (const vector<int> &)vec1 将 vec1 转换成常量迭代器。
vector<int>::reverse_iterator it2;
for(it2 = vec1.rbegin() + 1 ; it2 != vec1.rend() ; it2++ )
cout<< *it2 <<' '; // [3 2 1 0]
// end() 指向的是最后一个元素的下一位置的地址。
// begin() 指向的是第一个元素的地址。
for(auto it3 = vec1.crbegin() ; it3!=vec1.crend() ; it3++ )
cout<< *it3 <<' '; // [4 3 2 1 0]
// c++ 11 支持 auto 语句,使用 dev-c++ 需在工具中找到编辑选项中勾选命令并添加 -std=c++11。
vector<int>::const_reverse_iterator it3;
for(it3 = vec1.crbegin() ; it3 != vec1.crend() ; it3++ )
cout<< *it3 <<' '; // [4 3 2 1 0]
// 这里 auto 语句相当于 vector<int>::const_reverse_iterator。
/*
以下为错误代码:
vector<int> test(10,9);
vector<int> :: const_iterator it;
for(it = test.begin(); it != test.end(); ++ it){
*it = 0;
}
const_iterator迭代器是不能改变其所指向的元素的值的。
vector<int> test(10,9);
const vector<int> :: iterator it = test.begin();
++iter; 该句会报错。
*/
return 0;
}
VECTOR用法详解推荐: 公众号 傅里叶的猫 c++ vector详解(不是引流,是真心推荐)