h_back)、front_inserter(调用push_front)和inserter(插入到迭代器某个指定位置的前面);这些插入迭代器前面章节都做了详细介绍;
4.2 iostream迭代器
有两类:istream_iterator读取输入流、ostream_iterator向一个输出流写数据。
istream_iterator
in(is); //in从输入流is读取类型为T的值
istream_iterator
end; //读取类型为T的值的istream_iterator迭代器,表示尾后位置;
ostream_iterator
out(os); //out将类型为T的值写到输出流os中;
ostream_iterator
out(os,d); //out将类型为T的值写到输出流os中,每个值后面都输出一个d。d指向一个空字符结尾的字符数组。
4.3反向迭代器
反向迭代器:就是从尾元素向首元素反向移动的迭代器。知道迭代器,从而想想只是方向颠倒,就能更好的去理解反向迭代器。
反向迭代器的目的:表示元素范围,而这些范围是不对称的,这导致一个重要的结果:当我们从一个普通迭代器初始化一个反向迭代器,或是给一个反向迭代器赋值时,结果迭代器与原迭代器指向并不是相同的元素。
5.泛型算法结构
算法操作的五个迭代器:输入迭代器、输出迭代器、前向迭代器、双向迭代器和随机访问迭代器。
输入迭代器:只读,不写;单遍扫描,只能递增;
输出迭代器:只写,不读;单遍扫描,只能递增;
前向迭代器:可读写;多遍扫描,只能递增;
双向迭代器:可读写;多遍扫描,可递增递减;
随机访问迭代器:可读写;多遍扫描,支持全部迭代器运算
总结C++11特性:
1.lambda表达式
本章上面有重点讲解,并有运用的形式;我们可以将它理解为一个为命名的内联函数。
2.lambda尾置返回类型
例子:
transform(vi.begin(),vi.end(),vi.begin(),[](int i)->int{if(i<0) return -i;else return i;});
传递给transform的第四个参数是一个lambda,它的捕获列表是空的,接受单一int参数,返回一个int值。它的函数体是一个返回其参数的绝对值的if语句。
3.bind函数
本章上面对bind函数做了讲解,我们记住_n的参数理解,就能够运用它。
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?