STL常用容器总结
vector<T> | list<T> | map<T1, T2> multimap<T1, T2> | deque<T> | set<T> multiset<T> | stack<T> | queue<T> | |
---|---|---|---|---|---|---|---|
构造函数 | vector<T> v; //默认构造,常用 vector<T> u(const vector<T> &v); //拷贝构造 vector<T> u(v.begin(), v.end()); vector<T> v(n, elem); | list<T> lst; list<T> l(const list<T> &lst); list<T> l(lst.begin(), lst.end()); list<T> lst(n,elem); | map<T1, T2> m map<T1, T2> mp(const map<T1, T2> &m) | deque<T> d; deque<T> deq(d.begin(), d.end()); deque<T> d(n, elem); deque<T> deq(const deque<T> &d); | set<T> s; set<T> st(const set<T> &s); | stack<T> s stack<T> stk(const stack<T> &s); | queue<T> q queue<T>& que(const queue<T> &q); |
赋值操作 | vector<T>& operator=(const vector<T> &v); //等号赋值 assign(v.begin(), v.end()); assign(n, elem); | list<T>& operator=(const list<T> &lst); assign(lst.begin(), lst.end()); assign(n, elem); | map<T1, T2>& operator=(const map<T1, T2> &m) | deque<T>& operator=(const deque<T> &deq); assign(d.begin(), d.end()); assign(n, elem); | set<T>& operator=(const set<T> &s) | stack<T>& operator=(const stack<T> &s) | queue<T>& operator(const queue<T> &q) |
容量和大小操作 | empty(); //判断是否为空 capacity(); //容器的容量 size(); //容器中元素的个数 resize(int num); //重新指定大小为num,若容器变长则以默认值填充;若变短,删除末尾多余元素 resize(int num, elem); //重新指定大小为num,若容器变长,则以elem填充;若变短,删除末尾多余元素 | empty(); size(); resize(int num); resize(int num, elem); | empty(); size(); | empty(); size(); resize(int num); resize(int num, elem) | empty(); size(); | empty(); size(); | empty(); size(); |
插入和删除操作 | push_back(elem); //尾部插入元素elem pop_back(); //删除最后一个元素 insert(const_iterator pos, elem); //迭代器指定位置pos插入元素1个elem,返回新数据的位置 insert(const_iterator pos, int n, elem); //从迭代器指定位置pos插入n个元素elem insert(const_iterator pos, lst.begin(), lst.end()); //在指定位置pos插入lst的[begin,end]区间元素 erase(const_iterator pos); //删除迭代器指定位置pos的元素 erase(const_iterator start, const_iterator end); //删除从迭代器start到end之间的元素 clear(); //清空 | push_back(elem); pop_back(); push_front(elem); //头部插入元素elem pop_front(); //删除第一个元素 insert(const_iterator pos, elem); insert(const_iterator pos, int n, elem); insert(const_iterator pos, lst.begin(), lst.end()); erase(const_iterator pos); erase(const_iterator start, const_iterator end); clear(); remove(elem); //删除容器中所有与elem匹配的元素 | insert(elem); erase(const_iterator pos); erase(mp.begin(), mp.end()); erase(key); //删除容器中键为key的元素 clear(); | push_back(elem); pop_back(); push_front(); pop_front(); insert(const_iterator pos, elem); insert(const_iterator pos, int n, elem); insert(const_iterator d.begin(), d.end()); erase(const_iterator pos); erase(const_iterator start, const_iterator end); clear(); | insert(elem); erase(const_iterator pos); erase(mp.begin(), mp.end()); erase(elem); //删除容器中为elem的元素 clear(); | push(elem); //栈顶添加一个元素 pop(); //栈顶删除一个元素 | push(elem); //向队尾添加一个元素 pop(); //从队头删除一个元素 |
读取和互换操作 | at(int idx); //返回索引为idx的数据 operator[int idx]; //返回索引为idx的数据 front(); //返回容器中第一个元素的数据 back(); //返回容器中最后一个元素的数据 swap(vector<T> v); //将v与调用swap()的容器元素互换 | front(); back(); swap(list<T> lst); | swap(map<T1, T2> mp); | at(int idx); operator[int idx] front(); back(); swap(deque<T> d); | swap(set<T> s) | top(); //返回栈顶元素 | front(); //返回队头元素 back(); //返回队尾元素 |
其它操作 | reserve(int n); //容器预留n个元素的位置,预留位置不初始化,元素不可访问 | reverse(); //反转链表 sort(); //链表排序 | find(key); //查找键为key的元素是否存在,若存在,则返回该元素的迭代器;若不存在,则返回m.end() count(key); //统计键为key的元素的个数 | - | find(elem); //查找值为elem的元素是否存在,若存在,则返回该元素的迭代器;若不存在,则返回s.end() count(elem); //统计值为elem的元素的个数 | - | - |
后续继续更新算法学习部分