1.实现共同的操作叫 算法;可以操作在多种容器类型上叫 泛型。
2.标准算法固有地独立于类型。
3.算法 永不 执行容器提供的操作。算法 从不 添加或删除元素。
4.泛型算法头文件 algorithm;泛化的算术算法 头文件 numeric。
5.写容器元素的算法:fill和fill_n。灾难性的后果!:对指定数目的元素做写入运算,或者写到目标迭代器的算法,都不检查目标的大小是否足以存储要写入的元素。
不能在没有元素的空容器上调用fill_n函数。
6.unique没有删除重复元素,而是将无重复的元素复制到序列的前端,从而覆盖相邻的重复元素。unique返回迭代器指向超出五重复的元素范围末端的下一位置。
7.算法不直接修改容器的大小。如果需要添加或删除元素,则必须使用容器操作。erase
8.谓词是做某些检测的函数,返回用于条件判断的类型,指出条件是否成立。
9.sort算法:使words按字典次序排列;stable_sort保留相等元素的原始相对位置。这两个都是重载函数。
10.插入器:
1).back_inserter,创建使用push_back实现插入的迭代器。
2).front_inserter,使用push_front实现插入。只有当容器提供push_front操作时才能使用。在容器的第一个元素前面插入。
3).inserter,使用insert实现插入操作。
11.
12.流迭代器定义 操作:自增、解引用、赋值。另可比较istream迭代器是否相等。
13.
14.ostream_iterator没有->操作符。
15.对于反向迭代器,++运算将访问前一个元素,而--运算则访问下一个元素。
16.若需以降序排列vector,只需向sort传递一对反向迭代器。流迭代器不能创建 反向迭代器。
17.
18.
输入:find、accumulate copy
输出:copy
前向:replace unique
双向:reverse
随机:sort
19.带有谓词函数形参的算法,其名字带有后缀_if;实现复制的算法版本带有_copy后缀。
20.
21.与对应的泛型算法不同,list容器特有的操作能添加和删除元素。
22.list容器提供的merge和splice运算会破坏他们的实参,比如当实参对象的元素合并到调用merge函数的list对象时,实参对象的元素被移出并删除。
23.copy(lst.begin(),lst.end(),back_inserter(vec));
24.istream_iterator初始化int型vector对象:vector<int> ivec(cin_it,end_of_stream);
25.列出五种迭代器类型及其各自支持的操作。
输入迭代器: == != ++ * ->
输出迭代器 ++ *
前向迭代器 == != ++ * ->
双向迭代器 == != ++ * -> --
随机访问迭代器 == != ++ * -> -- < <= > >= + +=
-(迭代器-整型值n 迭代器-迭代器) -= []
26.list拥有双向迭代器,vector有随机访问迭代器。
27.list容器上不能使用需要随机访问迭代器的泛型算法,如sort算法。泛型算法unique虽然可以用在list上,但其性能会降低。
28.list容器的unique操作真正删除了重复的元素,从而无需再使用容器的erase操作来删除重复元素。