1.额外的string操作
除了前面大多数顺序容器的共同操作外,string类型还提供了string和c风格字符数组之间的相互转换,且允许我们用下标代替迭代器版本。
string s(cp,n);//cp为数组,拷贝前n个,数组需以空字符结尾,拷贝到空字符结束 string s(s2,pos2);//s2为string,从pos2开始的字符拷贝 string s(s2,pos2,len2);
s.substr(m,n);取s字符的m位置到n位置
string还有其他insert和erase版本,以及两个额外的成员函数append和replace
string搜索操作:6个不同的搜索函数,每个函数4个重载版本。find(a),//a第一次出现的位置 rfind(a);//最后一次出现的位置。find_first_of(a);//a中任何一个字符第一次出现的位置
find_last_of(a); find_first_not_of(a); find_last_not_of(a); a的形式 c,pos s2,pos cp,pos cp,pos,n
string比较函数compare ,类似于c风格字符串中的strcmp。
string转化为数值 string s2="pi=3.14" d=stod(s2.substr(s2.find_first_of("+-.0123456789")))
2.容器适配器
三个顺序容器适配器:stack、queue、priority_queue.容器、迭代器和函数都有适配器。为了使其行为像另外一个类型、函数或迭代器,适配器相当于在底层顺序容器类型之上定义了一个新的接口。
定义适配器:stack<int> stk(deq);//从deq拷贝元素到stk
所有适配器都要求容器具有添加、删除以及访问尾元素的能力。stack(除array和forward_list外),queue(list,deque),priority_queue(vector,deque)
栈适配器:stack。栈默认deque实现。操作有s.pop();//删除栈顶元素,不返回该值。s.push();s.emplace();s.top();//返回栈顶元素,但不将该元素弹出
队列适配器:queue和priority_queue.queue默认基于deque实现。priority_queue默认基于vector。