Bitwise operators 在优先级队列C+的比较器运算符中使用带1的异或的用例是什么+; 从C++中的STL PrimyItQueQueLead的“CPUPPORY”示例中,我不完全理解这里给出的最后一个例子。 比较器是一个lambda表达式,这很好,但是使用按位异或,每个参数为1,这是我不知道的-它有什么好处
下面是代码示例:Bitwise operators 在优先级队列C+的比较器运算符中使用带1的异或的用例是什么+; 从C++中的STL PrimyItQueQueLead的“CPUPPORY”示例中,我不完全理解这里给出的最后一个例子。 比较器是一个lambda表达式,这很好,但是使用按位异或,每个参数为1,这是我不知道的-它有什么好处,bitwise-operators,priority-queue,bitwise-xor,Bitwise Operators,Priority Queue,Bitwise Xor,下面是代码示例: auto cmp = [](int left, int right) { return (left ^ 1) < (right ^ 1);}; std::priority_queue<int, std::vector<int>, decltype(cmp)> q3(cmp); for(int n : {1,8,5,6,3,4,0,9,7,2}) q3.push(n); print_queue(q3); template<ty
auto cmp = [](int left, int right) { return (left ^ 1) < (right ^ 1);};
std::priority_queue<int, std::vector<int>, decltype(cmp)> q3(cmp);
for(int n : {1,8,5,6,3,4,0,9,7,2})
q3.push(n);
print_queue(q3);
template<typename T> void print_queue(T& q) {
while(!q.empty()) {
std::cout << q.top() << " ";
q.pop();
}
std::cout << '\n';
}
我可以看到结果是向量成对排序,其中第二个大于第一个,但我不完全理解两件事:
比较之前只需翻转“奇数”位。谢谢!那么这种比较器的用例又如何呢?
8 9 6 7 4 5 2 3 0 1