1 |
1. vector 容器
(1). 容量
- 向量大小: vec.size();
- 向量真实大小: vec.capacity();
- 向量判空: vec.empty();
(2). 修改
- 末尾添加元素: vec.push_back();
- 末尾删除元素: vec.pop_back();
- 任意位置插入元素: vec.insert();
- 任意位置删除元素: vec.erase();
- 清空向量元素: vec.clear();
(3)迭代器
- 开始指针:vec.begin();
- 末尾指针:vec.end(); //指向最后一个元素的下一个位置
- 指向常量的末尾指针: vec.cend();
(4)元素的访问
- 下标访问: vec[1]; //并不会检查是否越界
- at方法访问: vec.at(1); //以上两者的区别就是at会检查是否越界,是则抛出out of range异常
- 访问第一个元素: vec.front();
- 访问最后一个元素: vec.back();
1 | int main(){ // vector 数组 |
2. stack 容器(先进后出)
不能通过角标或迭代器去循环值
- 压栈:s.push(12);
- 获取顶部元素:s.top();
- 弹栈顶部元素:s.pop();
- 判空: s.empty();
3. queue 容器(先进先出)
- 添加元素:s.push(12);
- 访问第一个元素: q.front();
- 访问最后一个元素: q.back();
- 弹出第一个元素:q.pop();
4. 优先级队列 priority_queue
1 | // int 存放的数据 vector<int> 数据类型(数组) greater 从大到小 less 从小到大 |
5. list 容器(链表,双向链表)
不能通过角标去访问
插入:
- 开头插入:l.push_front(11);
- 末尾插入:l.push_back(22);
- 指定的iterator位置插入:l.insert(l.begin(),10);
修改:
- 修改最后一个元素:l.back() = 33;
- 修改最开头的元素:l.front() = 44;
移除:
- 移除指定位置上元素:l.erase(l.begin());
- 移除开头元素:l.pop_front();
- 移除末尾元素:l.pop_back();
循环:
1 | // 循环 |
6. set 容器
set 容器(红黑树结构),会对你存入的数据进行排序,但是不允许元素相同
set<int, greater<int>> s;
:排序从大到小set<int, less<int>> s;
:排序从大到小pair<set<int,greater<int>>::iterator ,bool> res = s.insert(5);
:插入
1 | // set<int, less<int>> s; // 从小到大排序,默认就是 less |
7.函数谓词和函数对象
函数谓词:按照特定的规则所表写的函数谓词
函数对象:有函数重载了()
运算符
1 | class Student{ |
8. multiset容器
multiset容器 , 允许重复 ,用法和 set 一样
1 | // set<int,less<int>>;// 从小到大排序,默认就是 less |