c++ - 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 使用的所有类型的函数的集合,以便我更轻松地参考吗?
解决方案
推荐阅读
- javascript - 语义 UI 不检查选择更改
- datatable - Spotfire - 如何对数据表列中唯一的未过滤值进行属性控制
- excel - 有没有办法在出现警告消息框之前检测是否使用 VBA 建立数据连接失败?
- jdbc - Google Apps Script JDBC Google Cloud SQL 性能问题
- c# - 实体框架,从 datetime 迁移到 datetimeoffset
- mysql - mysql 错误代码 1093: You can't specify target table for update in FROM 子句
- android - 如何像C形一样弯曲矩形的起点?
- python - Django try/except on DoesNotExist 仍然抛出它
- php - 试图在数组内循环
- javascript - 从网页上传音频数据到服务器