顺序容器:vector deque list
适配器:根据原始容器类型所提供的操作,通过定义新的操作接口,适应基础的容器类型。
容器元素初始化:
C
C
C
C
C
如果想要把不同容器的元素相互赋值,则可用第4个构造函数或用assign。
迭代器的行为像指针。
用作容器类型要遵循2个条件
1.能赋值运算。
2.能复制。
注意:引用类型不能复制和赋值。IO流也不支持复制。
vector deque随机存储
list 链表
注意迭代器失效问题。
difference_type 存储两个迭代器差值的有符号整型,可为负数
value_type 元素类型
reference 元素左值类型,value_type&
const_reference 元素常量左值类型,const value_type&
size_type 无符号整型
const_iterator
reverse_iterator
const_reverse_iterator
时刻更新迭代器,不然会出现迭代器失效问题。
insert都是插在iter的前面。
iterator insert(iter,n); //n插入iter前面,返回新元素的迭代器
void insert(iter,begin,end); //begin end插入iter前面。
void insert(iter,n,t); n个t插入iter前。
如果容器元素支持的比较符,可以让容器整体比较。
如 vector
c.size()
c.max_size();
c.empty();
c.resize(n); //改变c的长度
c.resize(n,t);
reference c.back() ; //得到最后元素的引用
reference c.front(); //得到最前面元素的引用
c.at(n)==c[n];
c.clear();//清空
c.erase(iter); //返回iter后面的元素
c.erase(begin,end);//返回begin,end后面的元素
pop_front()和front()经常一起使用。
iterator find(begin,end,value);//找到value出现的第一个地方。
string 增加的构造函数:cp为空字符结尾的数组
1.string s(cp,n); //cp指向的数组的前n个元素。
2.string s(s2,pos2);//s2中从pos2开始复制给s
3.string s(s2,pos2,len);//s2中从pos2开始复制len个字符给s
string特有函数:
1.s.insert(pos,s2);//pos前插入string对象,,,pos为int
2.s.insert(pos,s2,pos,len);//pos前插入s2从pos开始的len长度
3.s.insert(pos,cp,len);//pos前插入cp的前len个字符
4.s.insert(pos,cp);//pos前插入cp
5.s.assign(s2); //s2赋值给s
6.s.assign(cp,len);//cp的len个字符给s
7.s.assign(cp);//cp赋给s
8.s.erase(pos,len);//删除从pos开始的len长
9.s.substr(pos,n);//返回一个string字符串,包含从pos开始的n个字符。
10.s.substr(pos);//返回string字符串,包含从pos开始的
11.s.substr();//返回s的副本
string中的append 和replace函数,返回s的引用
1.s.append(arg);//将arg插在s的后面。
2.s.replace(pos,len,args);//将args的元素替换 pos开始长为len的字符。
3.s.replace(b,e,args);//args的元素替换b,e 的所有字符
args可为:
1.s2
2.s2,pos,len
3.cp
4.cp,len
5.n,c
6.b2,e2; //迭代器
string提供的查找函数
1.s.find(args);
2.s.rfind(args);
3.s.find_first_of(args);//args中任意字符第一次出现的位置
4.s.find_last_of(args);
5.s.find_first_not_of(args);//查找第一个不属于args的字符
6.s.find_last_not_of(args);//最后一个不属于args的字符
args为:
1.c,pos //从pos开始,查找字符c,默认pos=0
2.s2,pos //pos开始查找string s2 pos默认为0
3.cp,pos //pos开始查找cp(cstring) pos默认为0
4.cp,pos,n //pos开始查找cp所指向的数组的前n个字符
string 的compare函数
1.s.compare(s2);
2.s.compare(pos1,n1,s2); //从pos1开始的n1个字符与s2做比较
3.s.compare(pos1,n1,s2,pos2,n2); //从pos1开始的n1个字符与s2从pos2开始的n2个字符比较
4.s.compare(cp) ;//与char* 比较
5.s.compare(pos1,n1,cp);//从pos1 开始的n1个字符与cp比较
6.s.compare(pos1,n1,cp,n2);//pos1开始的n1个字符与cp的前n2个字符比较。
适配器:容器适配器,迭代器适配器,函数适配器
默认
deque stack和queue
vector priority_queue
当然可以改变关联容器。
如stack
stack的关联容器为顺序容器
queue的关联容器必须支持push_front();
priority_queue 的关联容器必须提供随机访问。
priority_queue设置优先级插入。