第九章
顺序容器
1.vector<int> ivec;
vector<int> ivec2(ivec);
vector<string>::iterator mid = (svec.begin()+svec.end())/2;
2.迭代器
*ivec / ivec->mem
++ivec / --iter / iter++ / iter--
iter1==iter2 / iter1!=iter2
iter1-=iter2 / iter1+=iter2
3.first/begin(第一个)
last(最后一个)
end(最后一个下一个)
front()第一个的引用
back()最后一个的引用
4.c.push_back(t)
c.push_front(t)//用于list和deque
c.insert(p,t) //在p之前插入t
c.insert(p,n,t)//在p之前插入n个t
c.insert(p,b,e)//在p之前插入迭代器b到迭代器e之前的内容
5.对于stack的操作
s.empty()
s.size()
s.pop()
s.top()
s.push(item)
6.对于queue的操作
q.empty()
q.size()
q.pop()
q.front()
q.back()
q.top()//只用于优先队列
q.push(item)
第十章 关联容器
1.关联容器通过key存储和读取元素而顺序容器通过元素在容器中位置顺序存储和访问元素。
2.pair类
pair<T1,T2>p1;
pair<T1,T2>p1(v1,v2);
make_pair(v1,v2)返回新的pair
p1<p2//p1的两个属性均分别小于p2的两个属性
p.first
p.second
3.map类(容器,每个元素是pair)
map<k,v>m(m2);
map<k,v>m(b,e); //b,e另外一个map的迭代器
map<k,v>::key_type //k的类型
map<k,v>::mapped_type //v的类型
map<k,v>::value_type //pair<key_type,mapped_type>类
a.map<string,int> word_cnt;
word_cnt["Anna"]=1;创建pair<string,int>("Anna",1)
b.m.insert(e),若e为pair型,返回是否插入成功
m.insert(begin,end)插入beign……end之间的数据
c.m.count(k)
m.find(k)返回迭代器
d.m.erase(k)返回是否有元素pair被删除
m.erase(p)//p为迭代器,如果删除错误运行报错
m.erase(begin,end)//删除错误程序报错
4.set类
每个键只出现一次。
5.multimap和multiset类
每个键对应多个值域
m.lower_bound(k)返回不小于k的第一个元素迭代器
m.upper_bound(k)返回大于k的第一个元素迭代器
m.equal_rang(k)返回make_pair(m.lower_bound(k),m.upper_bound(k))
第十一章 泛型算法
1.泛型算法:本身不执行容器操作,只是单独以来迭代器和迭代器操作实现。
2.插入迭代器:解决空间不够问题
3.iostream迭代器
istream_iterator<T> in(strm)
istream_iterator<T> eof;
ostream_iterator<T> in(strm);
ostream_iterator<T> in(strm,delim) //delim:分隔符
ostream_iterator<T> in//必须初始化
e.g
#include<iostream>
#include<iterator>
#include<string>
using namespace std;
int main()
{
ostream_iterator<string> out_iter(cout,":test\n");//write one string per line to the standard output
istream_iterator<string> in_iter(cin),eof;//read strings from standard input and the end iterator
while(in_iter!=eof) {
//write value of in_iter to standard output
//and then increment the iterator to get the next value from cin
*out_iter = *in_iter;//write to standard output here
++out_iter;
++in_iter;
}
return 0;
}
4.反向迭代器
vec.rbegin()//最后一个元素
vec.rend()//第一个元素前一位置的元素
iter.base()//迭代器iter后一迭代器
1.vector<int> ivec;
vector<int> ivec2(ivec);
vector<string>::iterator mid = (svec.begin()+svec.end())/2;
2.迭代器
*ivec / ivec->mem
++ivec / --iter / iter++ / iter--
iter1==iter2 / iter1!=iter2
iter1-=iter2 / iter1+=iter2
3.first/begin(第一个)
last(最后一个)
end(最后一个下一个)
front()第一个的引用
back()最后一个的引用
4.c.push_back(t)
c.push_front(t)//用于list和deque
c.insert(p,t) //在p之前插入t
c.insert(p,n,t)//在p之前插入n个t
c.insert(p,b,e)//在p之前插入迭代器b到迭代器e之前的内容
5.对于stack的操作
s.empty()
s.size()
s.pop()
s.top()
s.push(item)
6.对于queue的操作
q.empty()
q.size()
q.pop()
q.front()
q.back()
q.top()//只用于优先队列
q.push(item)
第十章 关联容器
1.关联容器通过key存储和读取元素而顺序容器通过元素在容器中位置顺序存储和访问元素。
2.pair类
pair<T1,T2>p1;
pair<T1,T2>p1(v1,v2);
make_pair(v1,v2)返回新的pair
p1<p2//p1的两个属性均分别小于p2的两个属性
p.first
p.second
3.map类(容器,每个元素是pair)
map<k,v>m(m2);
map<k,v>m(b,e); //b,e另外一个map的迭代器
map<k,v>::key_type //k的类型
map<k,v>::mapped_type //v的类型
map<k,v>::value_type //pair<key_type,mapped_type>类
a.map<string,int> word_cnt;
word_cnt["Anna"]=1;创建pair<string,int>("Anna",1)
b.m.insert(e),若e为pair型,返回是否插入成功
m.insert(begin,end)插入beign……end之间的数据
c.m.count(k)
m.find(k)返回迭代器
d.m.erase(k)返回是否有元素pair被删除
m.erase(p)//p为迭代器,如果删除错误运行报错
m.erase(begin,end)//删除错误程序报错
4.set类
每个键只出现一次。
5.multimap和multiset类
每个键对应多个值域
m.lower_bound(k)返回不小于k的第一个元素迭代器
m.upper_bound(k)返回大于k的第一个元素迭代器
m.equal_rang(k)返回make_pair(m.lower_bound(k),m.upper_bound(k))
第十一章 泛型算法
1.泛型算法:本身不执行容器操作,只是单独以来迭代器和迭代器操作实现。
2.插入迭代器:解决空间不够问题
3.iostream迭代器
istream_iterator<T> in(strm)
istream_iterator<T> eof;
ostream_iterator<T> in(strm);
ostream_iterator<T> in(strm,delim) //delim:分隔符
ostream_iterator<T> in//必须初始化
e.g
#include<iostream>
#include<iterator>
#include<string>
using namespace std;
int main()
{
ostream_iterator<string> out_iter(cout,":test\n");//write one string per line to the standard output
istream_iterator<string> in_iter(cin),eof;//read strings from standard input and the end iterator
while(in_iter!=eof) {
//write value of in_iter to standard output
//and then increment the iterator to get the next value from cin
*out_iter = *in_iter;//write to standard output here
++out_iter;
++in_iter;
}
return 0;
}
4.反向迭代器
vec.rbegin()//最后一个元素
vec.rend()//第一个元素前一位置的元素
iter.base()//迭代器iter后一迭代器