C++ Primer 学习笔记_44_STL实践与分析(18)(二)

2014-11-24 12:10:33 · 作者: · 浏览: 1
向迭代器,但关联容器只能使用算法的一个子集。问题在于:关联容器的键是const对象。因此,关联容器不能使用任何写序列元素的算法。只能使用与关联容器绑在一起的迭代器来提供用于读操作的实参。

在处理算法时,最好将关联容器上的迭代器视为支持自减运算的输入迭代器,而不是完整的双向迭代器。

【重点理解】

C++标准为所有泛型和算术算法的每一个迭代器形参指定了范围最小的迭代器种类。例如:find至少需要一个输入迭代器。replace函数至少需要一对前向迭代器。replace_copy函数的头两个迭代器必须至少是前向迭代器,第三个参数代表输出目标,必须至少是输出迭代器。

对于每一个形参,迭代器必须保证最低功能。将支持更少功能的迭代器传递给函数是错误的;而传递更强功能的迭代器则没问题。

向算法传递无效的迭代器类别所引起的错误,无法保证会在编译时被捕获到。

//P358 习题11.26(d)
    vector
  
    iVec1,iVec2;
    //...
    //解释下列语句错误的原因,以及编译器能否检测出这类错误?
    sort(iVec1.begin(),iVec2.end());