queue
q.empty() 如果队列为空返回true,否则返回false
q.size() 返回队列中元素的个数
q.pop() 删除队列首元素但不返回其值
q.front() 返回队首元素的值,但不删除该元素
q.push() 在队尾压入新元素
q.back() 返回队列尾元素的值,但不删除该元素
stack
s.size( ) :返回栈中元素个数
s.top( ) :返回栈顶的元素
s.pop( ) :从栈中取出并删除元素
s.push(e) :向栈中添加元素e
s.empty( ) :栈为空时返回true
string中查找与分割
涉及到string类的两个函数find和substr:
1、find函数
原型:size_t find ( const string& str, size_t pos = 0 ) const;
功能:查找子字符串第一次出现的位置。
参数说明:str为子字符串,pos为初始查找位置。
返回值:找到的话返回第一次出现的位置,否则返回string::npos
if(b.find(i)!=string::npos)
2、substr函数
原型:string substr ( size_t pos = 0, size_t len = npos ) const;
功能:获得子字符串。
参数说明:pos为起始位置(默认为0),len为字符串长度(默认为npos)
返回值:子字符串
s.substr(pos) 截取s中从从pos开始(包括0)到末尾的所有字符的子串,并返回 s.substr(pos, n) 截取s中从pos开始(包括0)的n个字符的子串,并返回
s="12300";
n=3;
打印s.substr(n)输出的是00而不是123
vector
push_back( ) 将一个新的元素加到vector的最后面
pop_back( ) 删除Vector容器中的最后一个元素
c.back(),传回最后一个数据,不检查这个数据是否存在。
c.begin(),传回迭代器中的第一个数据地址。
c.capacity(),返回容器当前已分配的容量。
c.clear(),移除容器中所有数据。
c.empty(),判断容器是否为空。
insert()
①、 a.insert(a.begin(), 1000); //将1000插入到向量a的起始位置前
②、 a.insert(a.begin(), 3, 1000) ; //将1000分别插入到向量元素位置的0-2处(共3个元素)
③、 vector a(5, 1) ;
vector b(10) ;
b.insert(b.begin(), a.begin(), a.end()) ; //将a.begin(), a.end()之间的全部元素插入到b.begin()前
获取vecto
r容器最后一个元素
//方法一:
return vec.at(vec.size()-1);
//方法二:
return vec.back();
//
方法三:
return vec.end()-1; //注意:end指向末尾元素的下一个元素。
//方法四:
return vec.rbegin();//反向迭代器
c.rbegin() 返回一个逆序迭代器,它指向容器c的最后一个元素
c.rend() 返回一个逆序迭代器,它指向容器c的第一个元素前面的位置
set
set取并集,交集,差集
需要包含头文件:#include < algorithm >
set里面有set_intersection(取集合交集)、set_union(取集合并集)、set_difference(取集合差集)、set_symmetric_difference(取集合对称差集)等函数。
multiset
c++语言中,multiset是库中一个非常有用的类型,它可以看成一个序列,插入一个数,删除一个数都能够在O(logn)的时间内完成,而且他能时刻保证序列中的数是有序的,而且序列中可以存在重复的数。
关键坑:如果multiset的erase()参数为值,则会删除所有这个值的所有元素
二维的vector排序
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
bool cmp(vector<int> a, vector<int> b)
{
if(a[0] != b[0]) return a[0] > b[0];
if(a[1] != b[1]) return a[1] > b[1];
if(a[2] != b[2]) return a[2] > b[2];
}
int main()
{
vector<vector<int>> vec = { {1,4,3}, {1,4,7} , {1,3,5} , {2,9,4} , {2,5,8} , {3,9,6} };
sort(vec.begin(), vec.end(), cmp);
for(auto p : vec)
cout<<p[0]<<' '<<p[1]<<' '<<p[2]<<endl;
return 0;
}