std::transform是STL中用于批量元素映射的算法,支持单序列一元变换和双序列二元变换,要求输出空间预先分配或使用back_inserter等插入迭代器,禁止重叠读写与有副作用操作。

std::transform 是 STL 中最常用、最灵活的批量处理算法之一,核心作用是把一个或两个输入范围的元素,按指定规则转换后,写入到目标位置。它不改变原容器大小,只做“映射”操作。
单序列变换:一元操作
最常见用法:对一个容器每个元素执行相同操作,结果存入另一容器(或原地覆盖)。
- 要求目标容器提前分配好空间(或用 back_inserter),否则越界未定义
- 可原地操作——输入和输出迭代器指向同一容器,只要保证不重叠读写(如正向遍历+正向写入通常安全)
示例:把 vector
std::transform(v.begin(), v.end(), v.begin(), [](int x) { return x * x; });
// v 变为 {1, 4, 9, 16}
双序列变换:二元操作
用两个输入序列对应位置元素,通过二元函数生成结果。常用于向量加法、点积预处理等。
立即学习“C++免费学习笔记(深入)”;
标签: c++
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~