文章目录
STL
STL容器(类)
备注:std::stack
、std::queue
、std::priority_queue
没有迭代器
通用方法
-
Iterator begin()
返回容器的第一个元素的迭代器 -
Iterator end()
返回容器的最后一个元素的迭代器 -
int size()
返回容器的元素个数 -
bool empty()
返回容器是否为空 -
void clear()
清空容器内的所有元素 -
void insert(Iterator pos, T element)
在pos
的地方插入元素element
-
void erase(Iterator begin, Iterator end)
删除 [ b e g i n , e n d ) [begin, end) [begin,end) 之间的元素 -
bool operator==
、bool operator!=
比较两个容器是否相等/不等(相等即容器元素个数相同且相同位置上的元素相等)
迭代器 iterator
-
含义
指向STL容器中的某个元素(类似于指针) -
声明
STL容器::iterator
-
方法
T operator*
返回迭代器指向的元素operator++
、operator--
使迭代器指向下/上一个元素operator+(int n)
、operator-(int n)
使迭代器指向后/前n个元素
-
备注
STL容器 迭代器类型 vector 随机 string 随机 set 双向 map 双向 stack / queue / priority_queue / -
样例代码
代码#include <bits/stdc++.h> using namespace std; vector<int> v; void main1() { cout << "main1" << endl; for (vector<int>::iterator i = v.begin(); i != v.end(); ++i) { cout << *i << " "; } cout << endl; } void main2() { cout << "main2" << endl; cout << "*(v.begin() + 2) = " << *(v.begin() + 2) << endl; cout << "*(v.end() - 2) = " << *(v.end() - 2) << endl; } int main() { v.push_back(1); v.push_back(5); v.push_back(4); v.push_back(3); v.push_back(2); main1(); main2(); return 0; }
输出
main1 1 5 4 3 2 main2 *(v.begin() + 2) = 4 *(v.end() - 2) = 3
栈 std::stack
- 含义
同数据结构栈,元素先进后出 - 头文件
#include <stack>
- 方法
T top()
返回栈顶元素void push(T v)
使元素v入栈void pop()
使栈顶元素出栈
- 样例代码
代码
输出#include <bits/stdc++.h> using namespace std; stack<int> s; int main() { s.push(1); s.push(5); s.push(4); s.push(3); s.push(2); while (!s.empty()) { int x = s.top(); s.pop(); cout << x << " "; } return 0; }
2 3 4 5 1
队列 std::queue
- 含义
同数据结构队列,元素先进先出 - 头文件
#include <queue>
- 方法
T front()
返回队首元素T back()
返回队尾元素void push(T v)
使元素v入队void pop()
使队首元素出队
- 样例代码
代码
输出#include <bits/stdc++.h> using namespace std; queue<int> q; int main() { q.push(1); q.push(5); q.push(4); q.push(3); q.push(2); while (!q.empty()) { int x = q.front(); q.pop(); cout << x << " "; } return 0; }
1 5 4 3 2
优先队列 std::priority_queue
- 含义
同数据结构堆,最大(最小)元素始终在堆首 - 声明
std::priority_queue<数据类型, STL容器(可选), 比较器(可选)>
备注:
比较器可以是std::greater<数据类型>
从大到小
也可以是std::less<数据类型>
从小到大
若数据类型是struct
/class
就要实现operator<
或operator>
- 头文件
#include <priority_queue>
- 方法
T top()
返回堆首元素void push(T v)
使元素v入堆void pop()
使堆首元素出堆
- 样例代码
代码#include <bits/stdc++.h> using namespace std; priority_queue<int, vector<int>, greater<int> > q1; priority_queue<int, vector<int>, less<int>