c++ - 将单个成员从 vector A 分配给 vector B 的智能方法

标签 c++ c++11 stl lambda

这是我目前正在使用的一段代码,我想知道在 C++11 中是否有更优雅的方式来执行此操作 -

本质上是将vector_a复制到vector_b,然后稍作修改,然后返回vector_b

vector 元素属于 Point 类,它基本上是(省略构造函数和一堆方法):

class Point {
    double   x,
             y,
             z;
};

理想情况下,我喜欢将成员 zvector_avector_b 的分配归结为一两行,但不能'想出一个优雅的方式来做到这一点。

欢迎提出任何建议!

auto localIter = vector_a.begin();
auto outIter = vector_b.begin();
while (localIter != vector_a.end() && outIter != vector_b.end())
{
    outIter->z = localIter->z;
    localIter++;
    outIter++;
}

最佳答案

你可以使用transform()

std::transform (vector_a.begin(), vector_a.end(), vector_b.begin(), vector_a.begin(), [](Elem a, Elem b) { a->z = b->z; return a; });

其中 Elem 是一种 vector 元素。

关于c++ - 将单个成员从 vector A 分配给 vector B 的智能方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25349061/

相关文章:

c++ - 添加带有参数包扩展的所有参数

c++ - 使用派生类实例作为默认参数值

c++ - 循环到 map 前面

c++ - Visual C++ 6.0 链接错误

c++ - 如何用 C++ 编写一段代码来查找系统路径上文件的完整路径?

c++ - 自动与字符串文字

c++ - memory_order_seq_cst 和 memory_order_acq_rel 有何不同?

c++ - 实现 C++17 兼容的 STL 容器?

c++ - 如何在 STL 容器和成员函数调用中存储模板化对象

c++ - qt中的信号槽给出错误