1 头文件包含
#includr
2 初始化一定size的vector //vector是模板容器
vector my_vec(6);
vector my_vec2(6,8); //创建size为6,初始值为8的vector
3 获取vector的size(向量中元素的个数)/capacity(向量所能容纳的最大元素值)/max_size(最大可允许的vector元素数量值)
cout << my_vec2.size() << endl;
cout << my_vec2.capacity() << endl;
cout << my_vec2.max_size() << endl;
4 vector是顺序容器,可以通过[]来进行索引,但不能超过索引,否则会报错
cout<<my_vec[0]<<endl; //vector默认初始化值为0
cout<<my_vec2[0]<<endl;
cout<<my_vec2.at(0)<<endl; //通过at函数也可以
5 往vector中插入和删除数据,注意vector是单端容器,只能从尾部插入和弹出
my_vec.push_back(1);
my_vec.push_back(2);
cout << my_vec[my_vec.size()-1] << endl;
my_vec.pop_back();
cout << my_vec[my_vec.size() - 1] << endl;
6 清除容器中元素clear(),并判断是否为空empty()
while(!my_vec.empty()) {
cout << “vecotr不为空!” << endl;
my_vec.clear();
}
7 swap用来交换两个vector变量的值(注意模板中变量类型要相同才可以交换)
vectorvec1(5, 5);
vectorvec2(6, 6);
cout << vec1.size() << " " << vec1[0] << endl;
cout << vec2.size() << " " << vec2[0] << endl;
vec1.swap(vec2);
cout << vec1.size() << " " << vec1[0] << endl;
cout << vec2.size() << " " << vec2[0] << endl;
8 通过assign赋值vector
vec1.assign(2,90); //将vec1初始化为大小为2,初值为90
cout << vec1.size() << " " << vec1[0] << endl;
vec1.assign(vec2.begin(),vec2.end());
cout << vec1.size() << " " << vec1[0] << endl;//通过vec2重新对vec1初始化
9 关于迭代器
vectorvec_test1(6, 1);
vectorvec_test2(6, 2);
vector::iterator vec1_iter1 = vec_test1.begin(); //返回向量头指针,指向第一个元素
cout << vec_test1.size()<< " " << (*vec1_iter1) << endl;
vec1_iter1++;
*vec1_iter1=2;
cout << vec_test1.size() << " " << (*vec1_iter1) << endl;
vec1_iter1=vec_test1.insert(vec1_iter1,4);//在迭代器指向元素前增加一个元素4,返回指向这个元素的迭代器,注意之前的迭代器无法用了,我估计是重新申请内存了
cout << vec_test1.size() << " " << (*vec1_iter1) << endl;
vec1_iter1 = vec_test1.insert(vec1_iter1, 4,9);//在迭代器指向元素前增加4个元素9,返回指向这个元素的迭代器
cout << vec_test1.size() << " " << (*vec1_iter1) << endl;
vector::iterator vec1_iter2 = vec_test2.end();//返回向量尾指针,指向向量最后一个元素的下一个位置
vec1_iter1 = vec_test1.insert(vec1_iter1, vec_test2.begin(), vec1_iter2);//向量中迭代器指向元素前插入另一个相同类型向量的[first,last)间的数据
cout << vec_test1.size() << " " << (*vec1_iter1) << endl;
vec1_iter1 = vec_test1.erase(vec1_iter1); //删除向量中迭代器指向元素,指向删除元素的下一个元素
cout << vec_test1.size() << " " << (*vec1_iter1) << endl;
vec1_iter1 = vec_test1.erase(vec1_iter1, vec_test1.end()); //删除向量中[first,last)中元素,指向删除元素的下一个元素
cout << vec_test1.size() << " " << endl; //这里下一个指针是野指针,因为删除没了
vector::reverse_iterator vec1_iter3 = vec1.rbegin();//反向迭代器,指向最后一个元素
vector::reverse_iterator vec1_iter4 = vec1.rend();//反向迭代器,指向第一个元素之前的位置
vector::reference vec1_refer1 = vec1.front(); //返回首元素的引用
vector::reference vec1_refer2 = vec1.back(); //返回尾元素的引用
my_vec2.at(0) = 8;//at返回当前index的引用,可以当作左值,也可以用来索引