1:地址类
T.begin(),返回T的首地址;能对空使用
T.cbegin()同上,但地址类型为const
T.end()返回T的尾地址+1;能对空使用
T.cend()同上,但地址类型为const
T.front();都有,不能对空使用
T.back();除了forward_list,但它才是真正的返回末尾元素的地址所以T.back()=T.end()-1;不能对空使用
T.at(下标);安全的下标访问,越界会异常。下标操作不适用于链表。
swap(,);除string之外的类型(适配器),迭代器,指针都不会失效,但对于array来说,所代表的值已经交换。
2查找类。
T.lower_bound(地址1,地址2,需要查找的数,字母,字符串。。。,)
T.find(x,n);从n开始x第一次出现的位置,反回下标(无则返回npos,):string,set
T.rfind(x,n);从n开始逆向搜索
find(b,e,n);在b到e之间查找n,返回地址(无则返回T.end())
T.find_first_of();
T.find_last_of();
T.find_first_bot_of();
T.find_last_not_of();
3
T.count();
flush
T.empty();都支持(适配器)
T.size();,forward_list不支持。(适配器)
max_size()
(因为forward_list是单向访问,在链表中间段添加或删除元素时,无法通过直接用指向需要删除的元素或添加的迭代器来删除或添加元素,需要用特殊的insert和erase,所以以下4和5的insert和erase函数不适用于forward_list)
4插入类//向vector,string,deque插入元素会使迭代器,引用,指针失效。
T.insert(p,t)
T.insert(p,n,t)
T.insert(p,b,e)
T.insert(p,il)
T.push_back(s);除了forward_list的顺序容器,,(复杂度为O(n))
T.push_front(s);vector,string不支持
5删除类 //删除deque中除了首尾位置的元素,会使所以迭代器,指针,引用失效;指向vector,string中删除点之后位置的迭代器,引用和指针都会失效
T.pop_back();不支持forward_list
T.pop_front();不支持vector,string
T.erase(p);删除迭代器p指定的元素
T.earase(b,e);前闭后开
T.clear(),删除T的所有元素
6适用与forward_list的删除与添加函数
T.before_begin();返回首指针之前不存在元素的迭代器。
T.insert_after(p,t);在p迭代器之后插入t
T.insert_after(p,t,n);在p迭代器之后插入n个t
T.insert_after(p,b,e);在p迭代器之后插入迭代器b到迭代器e之间的元素
T.insert_after(p,il);在p迭代器之后插入集合il中的元素
T.erase_after(p);删除迭代器p之后的所有元素
T.erase_after(p,e);删除迭代器p到e之间的元素(开区间)
7string特有的下标删除添加
T.insert(pos,n,m);//在pos之前插入n个m;T.insert(s.size(),5,'n');//在末尾插入5个‘n’
T.erase(pos,n);//从pos开始删除n个元素(包括pos);T.erase(s.size()-5,4);删除倒数第5个到倒数第二个,4个元素
T.earse(pos);//删除pos与之后所以元素;
7改变容器大小:
T.resize(n);除array
T.resize(n.t);除array
list T(10,20);//初始化10个值为20的元素 T.resize(25);//元素个数变为25个,后15个元素值为0 T.resize(30,-1)//元素个数变为30个,后5个元素值为-1 T.resize(10);//删除最后20个元素,元素个数变为10个,值全为20
T.reserve(n)//分配至少容纳n个元素的内存空间(只用于string,vector)
T.capacity();//查看容量(只用于string,vector)
T.shrink_to_fit();//释放多余内存空间(string,vector,deque)