【发布时间】:2014-02-27 03:47:45
【问题描述】:
我有一个带有struct 的C++ 应用程序,它看起来像:
struct test_struc {
std::string name;
int x;
int y;
std::vector<int> data;
};
我想根据结构中的data 元素使用线条转换两个std::vector<test_struc>。到目前为止,我有代码:
std::vector<test_struc> first = <from somewhere else>;
std::vector<test_struc> second = <from somewhere else>;
std::vector<int> result;
std::transform (second.begin(), second.end(), first.begin(), result.begin(), op_xor);
op_xor 在哪里:
int op_xor (int &i,
int &j) {
return i^j;
}
如果first 和second 是int 的向量,这很有效,但由于它们不是,我不知道如何告诉代码使用test_struc 的data 元素作为参数到std::transform。
我是不是找错树了?或者有没有办法做到这一点?
【问题讨论】:
-
您知道,已经有en.cppreference.com/w/cpp/utility/functional/bit_xor。而 IIRC,你不能在
transform调用中修改东西,所以通过非常量引用是不好的。如果test_struct具有按位异或的逻辑定义,则重载运算符。如果没有,请让您的函子获取这些对象并对适当的成员进行操作。
标签: c++ vector struct transform