c++笔试准备之vector用法

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的引用,可以当作左值,也可以用来索引

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值