【stl】【vector】【知识】

1. 基础操作

1.1说明

1.1.1赋值、比较大小
  1. vector可以定义时赋初值
  2. vec之间可以 赋值,比较大小(一个一个数比较)
1.1.2存储方式

每次空间不够了申请二倍的空间,把之间的所有元素复制到此处(o(n))

1.1.3访问方式
  1. 迭代器:可用begin(),end()访问vector
    也可用rbegin(),rend()反向访问vector
for (vector<int>::iterator it = a.begin(); it != a.end(); it++){
     cout << *it << endl;
}
  1. 引用:vector[2]也可同迭代器一样访问
  2. 自动迭代器:vector::iteractor == auto:自动类型推导
  3. 自动引用:for(auto it:vec){}表示遍历所有vec里的元素(不是迭代器不用*it,而是真正的某个元素用it[2])
1.1.4说明
  1. 可以二维vector:vector<vector< int> >

1.2函数

1.2.1基础函数

push_back(),pop_back()
vector.size()
reverse(vec.begin(),vec.end())
vector.clear();清空

1.2.2sort排序
1.2.2.0说明

vector.end()取得是最后一个元素得后一位的地址(也就是:*vector.end()是错的)
所以sort(首地址=第一个元素地址,尾地址=最后一个元素地址+1)

1.2.2.1调用函数

sort(vec.begin(), vec.end());从小到大(nlgn的复杂度)
sort(vec.begin(), vec.end(), greater());从小到大从大到小

1.2.2.2 自定义比较函数

1.自定义

bool cmp(const node &a, const node &b){
     return a.score < b.score;
}
 sort(vectorStudents.begin(),vectorStudents.end(),comp);

2.重载小于号(在无法插入cmp时使用)

bool operator < (const student & stu1,const student &stu2){
     return stu1.score > stu2.score;
}
1.2.3去重

unique(vec.begin(), vec.end())把重复的元素放到后面,并且返回那啥的指针,方便去重删除,(o(n)),使用前必须排好序
去重:vec.erase(unique(vec.begin(), vec.end()), vec.end());

1.2.3找大于等于的点

vector必须是有序,找到第一个大于等于9的元素,lower_bound(A.begin(), A.end(), 9)返回9的迭代器,否则返回A.end()
upper_bound()返回大于它的第一个元素(olgn:他是二分查找)

2.操作

3.常用算法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值