1.泛型算法是一个不属于任何特定类别容器的算法,相反,它会从它的参数类型获得关于如何访问它所使用数据的提示。
标准库的泛型算法通常在它们的参数间采用迭代器来处理基本容器的元素。
2.增量运算符的优先级与*相同,而且它们都是右结合的,故*out++也就是
*(out++);
3.迭代适配器是一种函数,它会产生与其参数相关的属性的迭代器以做他用。
迭代适配器是在<iterator>中定义的。
最常用的的有back_inserter,它用一个容器作为它的参数并产生一个迭代器,在生成的迭代器被用作一个目的地的时候,它会向容器末端添加数值。
4.find_if的使用
5.当传递一个重载函数给一个模板函数时,因为我们没有提供让编译器用来选择哪个版本的任何参数,这个时候就要我们编写自己版本的谓词来解释我们使用的哪个版本的函数。
6.string::substr是对索引进行操作的,而对向量进行复制的时候,可以采用
string(i,j),创建了一个字符串,是在区间[i,j)中的字符的一个复制。
7.判断一个字符是否是回文
bool is_palindrome(const string &s){
return equal(s.begin(),s.end(),s.rbegin());
}
在上面中,rbegin也是一个迭代器,但这个迭代器会从容器的最后一个元素开始,并且从后向前地访问容器
equal函数比较了两个序列以判断它们是否包含有相等的值。
8.search 函数有两对迭代器参数:第一对指示了我们要查找的序列,第二对则指示了一个序列——我们希望为这个序列定位。如果search失败,那么它将返回第二个迭代器,如果找到了我们的目标序列,那么它返回的就目标序列的第一个字符所在位置的迭代器
9.如果一个容器支持索引,那么它的迭代器也会支持。
beg是string::const_iterator类型的,那么beg[-1]就是位置紧位于由beg所指示的字符之前的那一个字符,我们可以把beg[-1]看成是*(beg-1)的简写
同样i和bge是一个类型的,那么i[sep.size()]是*(i+sep.size())的简写。