gpt4 book ai didi

c++ - boost::dynamic_bitset 结果与 std::vector 不一致?

转载 作者:搜寻专家 更新时间:2023-10-31 02:02:49 26 4
gpt4 key购买 nike

我查看了 boost 对 dynamic_bitset 的实现并发现他们比较底层整数存储类型以改进 operator<性能,我用下面的代码测试了正确性并得到了不一致的结果。这是错误吗?

std::vector<bool>       v1, v2;
v1.push_back(0); v1.push_back(1);
v2.push_back(1); v2.push_back(0);
std::cout << (v1 < v2) << '\n';

boost::dynamic_bitset<> b1, b2;
b1.push_back(0); b1.push_back(1);
b2.push_back(1); b2.push_back(0);
std::cout << (b1 < b2) << '\n';

我希望两者的输出都是 1 , 但第二个输出是 0 .

最佳答案

查看从最高有效位到最低有效位的bitset

#include <iostream> 
#include <boost/dynamic_bitset.hpp>
int main(int, char*[]) {
boost::dynamic_bitset<> x(5); // all 0's by default
x[0] = 1;
x[1] = 1;
x[4] = 1;
std::cout << x << "\n";
return EXIT_SUCCESS;
}

输出是

10011

运算符(operator) <<对于 dynamic_bitset从最高有效位到最低有效位打印位集,因为这是大多数人阅读时使用的格式。

这就是你正在做的

b1.push_back(0); b1.push_back(1);//b1 = 10    
b2.push_back(1); b2.push_back(0);//b2 = 01

Boost 是正确的。您应该更改 push_back 的顺序是为了得到你想要的。 Boost

关于c++ - boost::dynamic_bitset 结果与 std::vector<bool> 不一致?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56585333/

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