gpt4 book ai didi

c++ - 使用相同的迭代器遍历两个 std::vector

转载 作者:太空宇宙 更新时间:2023-11-04 16:27:54 26 4
gpt4 key购买 nike

所以,我的一个类有以下重载:

DVector &operator+=(DVector const &other) {
if (vector.size() >= other.vector.size()) throw up; // lol.

std::for_each(other.vector.begin(); other.vector.end(), [](DVector const &pass) {
// huh?
});
}

因此,我们的想法是对两个 vector 的每个成员求和(嗯,每个 DVector 实例都包含一个名为 std::vector<float>vector 成员),例如:

如果我有一个 DVector包含 vector包含以下 float 的成员:11.0, 23.5, 12.3 ,然后是另一个包含 14.0, 6.5, 7.7 的,两者之和应导致第一个 vector 持有 25.0, 25.0, 25.0 .

问题:假设 vector 的大小不是问题,或者我只是被迫使用 for (auto x: vector.size()),是否有任何方法可以仅使用一个迭代器循环遍历两个 vector 并对它们的成员求和? ?

干杯,朱利安。

最佳答案

这是一个 std::transfom 算法,它接受两个输入和一个输出迭代器。

我不知道你具体的 vector 设计是如何构造的,但你应该能够根据你的需要修改以下内容。

 std::transform(input1.begin(), input1.end(),  //input1
intput2.begin(), //input2
input1.begin(), //output
[](double a, double b){
return a+b;
});

您也可以为您使用不同的输出迭代器 operator +

这里有一些引用

http://en.cppreference.com/w/cpp/algorithm/transform

http://www.cplusplus.com/reference/algorithm/transform/

当你有不同的输出时,back_inserter 是你的 friend :

http://en.cppreference.com/w/cpp/iterator/back_inserter

关于c++ - 使用相同的迭代器遍历两个 std::vector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10176899/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com