首页 > 解决方案 > c++ STL 中的生成器函数、谓词、操作等等?

问题描述

std::remove_if

template <class ForwardIterator, class UnaryPredicate>
  ForwardIterator remove_if (ForwardIterator first, ForwardIterator last, UnaryPredicate pred);

我的老师花了很长时间教授算法中的谓词std::remove_if,到目前为止,我了解到谓词可以是返回的函数或函数指针,也可以是bool具有bool operator()重载的函数对象。但是,当我越来越多地了解 STL 库时,我觉得谓词只是一种可以传递给算法的“操作”。再举几个例子:

标准::生成

template <class ForwardIterator, class Generator>
  void generate (ForwardIterator first, ForwardIterator last, Generator gen);

标准::排序

template <class RandomAccessIterator, class Compare>
  void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);

标准::转换

template <class InputIterator, class OutputIterator, class UnaryOperation>
  OutputIterator transform (InputIterator first1, InputIterator last1,
                            OutputIterator result, UnaryOperation op);

所以这里我们看到生成器函数、比较函数、一元运算等,相信还有很多。这些函数通过接受不同类型和数量的输入参数来服务于不同的目的(不同的返回类型)。但是,它们都出现在 STL 中不同的算法下,有时我会感到困惑并错误地编写函数。有人可以指点我 STL 使用的所有类型的函数的集合,以便我更轻松地参考吗?

标签: c++c++11

解决方案


推荐阅读