C++ STL bit_xor 使用说明

2020-06-02  本文已影响0人  book_02

1. 说明

异或的函数对象类。
可用作 transform 或者 accumulate等的操作符。

类似的还有与操作bit_and 、或操作 bit_or

2. 头文件

#include <functional>

3. 例子:对一个数组逐个进行异或操作

比如常见的问题:一个数组里只有1个数出现1次,其他数都出现2次。
这时可用异或操作找出这个只出现一次的数。

#include <iostream>
#include <numeric>
#include <functional>

using namespace std;

int main()
{
    vector<int> nums = { 1,2,1,3,2 };

    int num = std::accumulate(nums.begin(), nums.end(), 0, std::bit_xor<int>());

    cout << num << endl;

    return 0;
}

结果:

3

这里用了std::accumulate()来简化代码,也可以写成for循环形式。

4. 参考

http://www.cplusplus.com/reference/functional/bit_xor/
https://en.cppreference.com/w/cpp/utility/functional/bit_xor

上一篇下一篇

猜你喜欢

热点阅读