STL学习笔记(三)——vector

1、定义(构造函数):
1)、vector vec; //<>的内容根据存储类型定,如char/short/long/char /string… ,同时结构体亦可以,其未定义大小
struct st{ int i;}; voctor vec;
2)、vector vec1(6); //大小为6,值默认为0
3)、vector vec2(6,8); //大小为6,所有值初始化为8
4)、vector vec3(vec1); //拷贝构造
5)、vector vec4(vec2.begin(),vec2.end()); //或使用迭代器vector :: iterator ite= vec2.begin();,此时ite相当于int
指针
2、容量
1)、vector vec; //vec.capacity() 为0
2)、vector vec1(6,1); //vec1.capacity() 为6
3)、vec1.push_back(1); //此时vec1的容量会增加,至于增加多少,不同编译器不同 ,因为新申请空间,迭代器失效
4)、vec2.reserve(100); 扩展容量,只能比原来大,此时容量为100
5)、vec2.size() //返回有效元素的个数,与容量大小无关,如进行4操作后,其size为7
6)、vec2.resize(10); //重新设置有效元素的个数,与容量无关,可大可小,内存不够时重新申请
7)、vec2.empty() //若vec2为空返回0,否则返回1;
3、操作——输出 vector vec(60,1);
1)、cout << vec[i] << endl;
2)、cout << vec.at(i) << endl;
3)、cout << vec.back() << endl; //输出尾元素
4)、for(ite; ite != vec.end(); ite++){cout << *ite << endl;} //使用迭代器
5)、for_each(vec.begin(),vec.end(),fun); //其中fun为自定义的函数,参数须为int c,注意不能写成fun,使用需要#include
4、操作——增加 vector vec(5,1); vector vec1(5,2);
1)、vec.push_back(999); //将999添加到尾部
2)、vec.insert(vec.begin(),3); //最前面插入3 或vec.insert(ite,3);使用迭代器
3)、vec.insert(vec.begin(),3,9); //最前面插入3个9
4)、vec.insert(vec.begin(),vec1.begin()+1,vec1.end()); //将vec1的部分插入到vec
5、操作——删除/交换/排序及其他 vector vec(5,1); vector vec1(5,2);
1)、vec.pop_back(); //删除最后一个元素
2)、vec.erase(vec.begin()+1); //删除第二个元素
3)、vec.erase(vec.begin(),vec.end()-1); //删除一段
4)、vec.clear(); //删除所有元素
5)、vec.swap(vec1); //交换内容
6)、cout << (vec > vec1) << endl; //运算符重载,成立返回1,否则0
7)、sort(vec.begin(),vec.end()); //从小到大排序
8)、sort(vec.begin(),vec.end(),greater()); //从大到小排序,使用greater())有时需要include
9)、random_shuffle(vec.begin(),vec.end()); //将容器的元素随机打乱,通常配合srand((unsigned int) time(0));种子使用

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值