Skip to content

Latest commit

 

History

History
13 lines (7 loc) · 1.2 KB

File metadata and controls

13 lines (7 loc) · 1.2 KB

98、输⼊参数

所有泛型算法的前两个参数都是⼀对迭代器,通过称为first, last。⽤来标示算法的操作区间。

每⼀个 STL 算法的声明,都表现出它所需要的最低程度的迭代器类型。⽐如find() 需要⼀个 inputiterator ,这是它的最低要求,但同时也可以接受更⾼类型的迭代器。

如 Forwarditerator、 Bidirectionaliterator 或 RandomAcessIterator,因为,前者都可以看做 是⼀个 inputiterator,⽽如果你给 find() 传⼊⼀个 Outputiterator,会导致错误。

将⽆效的迭代器传给某个算法,虽然是⼀种错误,但不保证能够在编译器期间就被捕捉出来。 因为所谓“迭代器类型”并不是真实的型别,它们只是function template的⼀种型别参数。

许多 STL 算法不仅⽀持⼀个版本,往往第⼀个版本算法会采⽤默认的⾏为,另⼀个版本会提 供额外的参数,接受⼀个仿函数,以便采取其它的策略。

例如 unique() 默认情况下会使⽤ equality 操作符来⽐较两个相邻元素,但如果这些元素的型 别并没有提供,那么便可以传递⼀个⾃定义的函数(或者叫仿函数)。