这是我目前正在使用的一段代码,我想知道在 C++11 中是否有更优雅的方式来执行此操作 -
本质上是将vector_a
复制到vector_b
,然后稍作修改,然后返回vector_b
。
vector 元素属于 Point
类,它基本上是(省略构造函数和一堆方法):
class Point {
double x,
y,
z;
};
理想情况下,我喜欢将成员 z
从 vector_a
到 vector_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/