常用STL整理 (施工中 2017.8.11更新)
1.vector
构造
vector <int> v;
基本操作
v.begin() //指向迭代器中第一个元素。 v.end() //指向迭代器中末端元素的下一个,指向一个不存在元素。 v.push_back(elem) //在尾部加入一个数据。 v.pop_back() //删除最后一个数据。 v.capacity() //vector可用空间的大小。 v.size() //返回容器中数据个数。 v.empty() //判断容器是否为空。 v.front() //传回第一个数据。 v.back() //传回最后一个数据,不检查这个数据是否存在。 v.at(index) //传回索引idx所指的数据,如果idx越界,抛出out_of_range。 v.clear() //移除容器中所有数据。 v.erase(iterator) //删除pos位置的数据,传回下一个数据的位置。 v.erase(begin,end) //删除[beg,end)区间的数据,传回下一个数据的位置。注意:begin和end为iterator v.insert(position,elem) //在pos位置插入一个elem拷贝,传回新数据位置。 v.insert(position,n,elem) //在pos位置插入n个elem数据,无返回值。 v.insert(position,begin,end) //在pos位置插入在[beg,end)区间的数据,无返回值。
2.priority_queue
构造
priority_queue<int>que; //采用默认优先级构造队列最大值先出队 priority_queue<int,vector<int>,greater<int> >que3; //最小值先出队 priority_queue<int,vector<int>,less<int> >que4; //最大值先出队
基本操作
que.empty() //判断一个队列是否为空 que.pop() //删除队顶元素 que.push() //加入一个元素 que.size() //返回优先队列中拥有的元素个数 que.top() //返回优先队列的队顶元素
3.map
构造
map<int, string> mp;
基本操作
mp.begin() //返回指向map头部的迭代器 mp.clear() //删除所有元素 mp.count() //返回指定元素出现的次数 mp.empty() //如果map为空则返回true mp.end() //返回指向map末尾的迭代器 mp.equal_range() //返回特殊条目的迭代器对 mp.erase() //删除一个元素 mp.find() //查找一个元素 mp.get_allocator() //返回map的配置器 mp.insert() //插入元素 mp.key_comp() //返回比较元素key的函数 mp.lower_bound() //返回键值>=给定元素的第一个位置 mp.max_size() //返回可以容纳的最大元素个数 mp.rbegin() //返回一个指向map尾部的逆向迭代器 mp.rend() //返回一个指向map头部的逆向迭代器 mp.size() //返回map中元素的个数 mp.swap() //交换两个map mp.upper_bound() //返回键值>给定元素的第一个位置 mp.value_comp() //返回比较元素value的函数
4.queue
构造
queue<int> q;
基本操作
q.push(num) //入列,插入队列的末端。 q.empty() //判断队列是否为空 q.size() //获取队列中的元素个数 q.back() //访问队列尾元素
5.stack
构造
stack<int> s; stack<int> c1(c2); 复制stack
基本操作
s.top() //返回栈顶数据 s.push(num) //在栈顶插入数据 s.pop() //弹出栈顶数据 s.empty() //判断栈是否为空 s.size() //返回栈中数据的个数
6.set
构造
set<int> s;
基本操作
s.insert(num) //把元素插入到集合中,同一元素不会重复插入 s.inset(first,second) //将定位器first到second之间的元素插入到set中,返回值是void s.erase(6) //删除键值为6的元素 s.find(6) //查找键值为6的元素,如果没找到则返回end() s.begin() //返回set容器的第一个元素 s.end() //返回set容器的最后一个元素 s.clear() //删除set容器中的所有的元素 s.empty() //判断set容器是否为空 s.max_size() //返回set容器可能包含的元素最大个数 s.size() //返回当前set容器中的元素个数 s.rbegin() //返回的值和end()相同 s.rend() //返回的值和rbegin()相同 s.count() //用来查找set中某个某个键值出现的次数,一般用于判断某一键值是否在set出现过 erase(iterator) //删除定位器iterator指向的值 erase(first,second) //删除定位器first和second之间的值(不包括second) erase(key_value) //删除键值key_value的值 lower_bound(key_value) //返回第一个大于等于key_value的定位器 upper_bound(key_value) //返回最后一个大于等于key_value的定位器
7.deque
构造
deque<int> c; deque<int> c1(c2); //复制deque deque<int> c(n, elem); //创建一个含有n个elem拷贝的deque
基本操作
c.assign(beg, end); //将beg-end区间中的值赋值给c c.assign(n, elem); //将n个elem的拷贝赋值给c c.at(idx); //返回idx位置所指数据 c.front(); //返回第一个数据 c.back(); //返回最后一个数据 c.begin(); //返回指向第一个数据的迭代器 c.end(); //返回指向最后一个数据的下一个位置的迭代器 c.rbegin(); //返回逆向队列的第一个数据 c.rend(); //返回指向逆向队列的最后一个数据的下一个位置的迭代器 c.push_back(elem); //在尾部加入一个数据 c.push_front(elem); //在头部插入一个数据 c.insert(pos, elem); //在pos位置插入一个elem拷贝,返回新数据位置 c.insert(pos, n, elem); //在pos位置插入n个elem数据,无返回值 c.insert(pos, beg, end); //在pos位置插入在beg-end区间的数据,无返回值 c.pop_back(); //删除最后一个数据 c.pop_front(); //删除头部数据 c.erase(pos); //删除pos位置的数据,返回下一个数据的位置 c.erase(beg, end); //删除beg-end区间的数据,返回下一个数据的位置 c.empty(); //判断容器是否为空 c.max_size(); //返回容器中最大数据的数量 c.resize(num); //重新指定队列的长度 c.size(); //返回容器中实际数据的个数 c1.swap(c2) //将c1和c2元素互换