在处理算法时,最好将关联容器上的迭代器视为支持自减运算的输入迭代器,而不是完整的双向迭代器。
【重点理解】
C++标准为所有泛型和算术算法的每一个迭代器形参指定了范围最小的迭代器种类。例如:find至少需要一个输入迭代器。replace函数至少需要一对前向迭代器。replace_copy函数的头两个迭代器必须至少是前向迭代器,第三个参数代表输出目标,必须至少是输出迭代器。
对于每一个形参,迭代器必须保证最低功能。将支持更少功能的迭代器传递给函数是错误的;而传递更强功能的迭代器则没问题。
向算法传递无效的迭代器类别所引起的错误,无法保证会在编译时被捕获到。
//P358 习题11.26(d)
vector
iVec1,iVec2;
//...
//解释下列语句错误的原因,以及编译器能否检测出这类错误?
sort(iVec1.begin(),iVec2.end());