DAY1 STL基础
容器
string vector queue stack set map list
String 字符串
迭代器:string::iterator it=s1.begin()
函数
- clear()
- length()
- push_back() //在最后插入
- append() // append(n,’ ') 在最后插入n个‘ ’ append(str2,n,m) 在后面插入str2 中第n个开始插入m个字符 n,m可以省略
- find() // find(x,pos) 从第pos个位置开始找x pos可省略
- erase()
//erase(pos,n) 删除从pos开始的n个字符 n省略则只去掉一个 //erase(s.begin()+1,s.end()-1) 从begin+1删到end-1 这里两个需要都是迭代器
Vector 向量
动态数组,内存连续
可以随机访问
构造函数:
- vector< int > v1;
- vector< string > v2(“1234”);
- vecotr< int > v3(5,2); // 22222
- vector< int > v4(v3);
常用函数:
- push_back()
- pop_back()
- front()
- back()
- insert() // insert(iterator,value)
- erase()
- size()
Queue 队列
先进先出(FIFO)
构造函数queuequ;
常用函数:
- push()
- pop()
- front()
- back()
- size()
- empty() // 清空
Priority_queue 优先队列
他和queue不同的就在于我们可以自定义其中数据的优先级, 让优先级高的排在队列前面,优先出队
即值越大的在越上边
priority_queue <int,vector<int>,greater<int> > 升序队列
priority_queue <int,vector<int>,less<int> > 降序队列
Deque 双端队列
双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行。
http://www.cplusplus.com/reference/deque/deque/
Stack 堆栈
先进后出(FILO)
构造函数stackst;
常用函数:
- push()
- pop()
- top()
- size()
- empty()
Set 集合
元素有序排列、不重复
查询、插入、删除O(logn)
构造函数:set<int> se;
常用函数:
-
insert()
-
erase()
-
find()
-
size()
-
clear()
-
count() // count(value) 数value有几个 (只有0和1)
-
lower_bound(x):大于等于x的第一个元素位置,不存在返回end() 返回迭代器
要知道第几个需要lower_bound(v.begin(), v.end(), 2) - v.begin() -
upper_bound(x):大于x的第一个元素位置,不存在返回end()
Multiset
C++语言中,multiset是<set>库中一个非常有用的类型
它可以看成一个序列,插入一个数,删除一个数都能够在O(logn)的时间内完成
而且他能时刻保证序列中的数是有序的,而且序列中可以存在重复的数。
构造函数:multiset<int> h;
Map 字典
key-value键值对,按key有序排列
插入、删除O(logn)