c++的std::transform算法怎么用 对容器元素进行批量操作【STL算法】

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

c++的std::transform算法怎么用 对容器元素进行批量操作【STL算法】-第1张图片-佛山资讯网

std::transform 是 STL 中最常用、最灵活的批量处理算法之一,核心作用是把一个或两个输入范围的元素,按指定规则转换后,写入到目标位置。它不改变原容器大小,只做“映射”操作。

单序列变换:一元操作

最常见用法:对一个容器每个元素执行相同操作,结果存入另一容器(或原地覆盖)。

  • 要求目标容器提前分配好空间(或用 back_inserter),否则越界未定义
  • 可原地操作——输入和输出迭代器指向同一容器,只要保证不重叠读写(如正向遍历+正向写入通常安全)

示例:把 vector 全部平方并存回原容器

vector v = {1, 2, 3, 4};
std::transform(v.begin(), v.end(), v.begin(), [](int x) { return x * x; });
// v 变为 {1, 4, 9, 16}

双序列变换:二元操作

用两个输入序列对应位置元素,通过二元函数生成结果。常用于向量加法、点积预处理等。

立即学习“C++免费学习笔记(深入)”;

标签: c++

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~