vector<>
基本操作
| 操作 | 描述 | 时间复杂度 |
|---|---|---|
| push_back() | 在尾部插入一个元素 | O(1) |
| pop_back() | 弹出最后一个元素 | O(1) |
| size() | 返回元素个数 | O(1) |
| [ ] | 随机访问元素 | O(1) |
| front() | 返回第一个元素 | O(1) |
| back() | 返回最后一个元素 | O(1) |
#include<iostream>
#include<algorithm>
#include<vector>
#include<stack>
#include<queue>
#include<set>
#include<map>
#include<utility>
using namespace std;
int main(){
vector <int> a;
a.push_back(1);
a.push_back(2);
a.push_back(3);
a.push_back(4);
// 也可用循环插入
cout<<a.size();
cout<<a[0]<<endl;
cout<<a.front()<<endl;
cout<<a.back()<<endl;
for(auto it=a.rbegin();it!=a.rend();it++){
cout<<*it;
}
cout<<endl;
for(auto it=a.begin();it!=a.end();it++){
cout<<*it;
}
cout<<endl;
a.pop_back();
for(int i=0;i<a.size();i++){
cout<<a[i];
}
return 0;
}自定义大小
v1.resize(110);
逆序
reverse(a.begin,a.end);
pair
pair存储一个二元组,可以存储任意类型。
若存储元素可以比较,先比较第一关键字;若第一关键字相等,再比较第二关键字。
默认升序;
按照题目的要求可手写出compare函数用于sort或重载比较运算符
#icnlude<utility> #include<assert.h> pair<int ,int> p1; p1.first; p1.second; assert(p1<p2); assert断言,自行百度
priority_queue<>
优先队列,堆;默认内部降序,大根堆;
基本操作
| 操作 | 描述 | 时间复杂度 |
|---|---|---|
| push() | 向堆里插入一个元素 | O(logn) |
| pop() | 弹出最后一个元素 | O(1) |
| size() | 返回元素个数 | O(1) |
| empty() | 判断是否为空 | O(1) |
| top() | 返回第一个元素(即最大元) | O(logn) |
//1.降序优先队列 priority_queue<int,vector<int>,less<int>> pq;等价于priority_queue<int> pq; //2.升序优先队列 priority_queue<int,vector<int>,greater<int>> pq; pq.push(); pq.top(); pq.pop();
set
内部红黑树维护实现,默认升序。
基本操作
| 操作 | 描述 | 时间复杂度 |
|---|---|---|
| insert() | 插入一个元素 | O(logn) |
| erase() | 删除一个元素 | O(logn) |
| find | 按值查找,返回元素迭代器,找不到返回end | O(logn) |
| lower_bound() | 找大于等于值的第一个元素,返回其迭代器,找不到返回end | O(logn) |
| upper_bound() | 找大于值的第一个元素,返回其迭代器,找不到返回end | O(logn) |
| begin() | 最小元素迭代器,*解除引用 | O(1) |
| end() | 尾迭代器,在最后一个元素的后面一个 | O(1) |
| ++/-- | 移动迭代器 | O(logn) |
| size() | 返回元素个数 | O(1) |
| empty() | 判断是否为空 | O(1) |
set<int> s; //能比较
s.insert(1); //重复元素只记录一次
s.insert(5);
s.insert(6);
s.erase(1);
auto it=s.find(100);
cout<<*it<<endl;
for(auto it=s.begin();it!=s.end();it++){
cout<<*it<<" ";
}


京公网安备 11010502036488号