c ++如何对位集向量进行排序?

c++ How to sort a vector of bitsets?

我有一个向量 bitsets:

vector < bitset<1024> > myvector;

从以下位置对该向量进行排序的最佳方法是什么:

0: xxx0100
1: xxx1100
2: xxx0010
3: xxx0001
...
...

此订单:

0: xxx0001
1: xxx0010
2: xxx0100
3: xxx1100
...
...

我已经尝试使用 std:sort 执行此操作,但没有成功,因为 std:sort 使用“<”- 运算符,它不适用于位集。

在此先感谢您的帮助!非常感谢任何建议或想法!

编辑:
我的问题与 Sorting a vector of custom objects 不同,因为 bitset 不可能使用“<”- 运算符。所以我的问题是,我可以使用哪个运算符来比较 bitset?

排序 std::bitset 的一种简单方法是使用 std::bitset::to_string 将其转换为 std::string,然后使用 std::strings operator< 进行比较位集。

std::vector<std::bitset<128>> data = {1000,2000,80000,15,6000,2};
std::sort(data.begin(), data.end(), [](const auto & lhs, const auto & rhs)
                                    { return lhs.to_string() < rhs.to_string(); });

Live Example

正如评论中指出的那样,如果位集足够小以适合 unsigned long long,那么您可以使用 std::bitset::to_ullong 并比较 unsigned long long 而不是字符串。