NPa*_*NPa 5 c++ sorting vector bitset
我有一个矢量bitsets:
vector < bitset<1024> > myvector;
Run Code Online (Sandbox Code Playgroud)
从这个向量排序的最佳方法是什么:
0:xxx0100
1:xxx1100
2:xxx0010
3:xxx0001
...
...
这个订单:
0:xxx0001
1:xxx0010
2:xxx0100
3:xxx1100
...
...
我已经尝试用std:sort来做这个,但它不起作用,因为std:sort使用"<" - 运算符,这对于bitsets不起作用.
在此先感谢您的帮助!任何建议或想法都非常感谢!
编辑:
我的问题不同于排序自定义对象的向量,因为不可能使用"<" - 运算符bitset.所以我的问题是,我可以使用哪个运算符进行比较bitset?
排序a的一种简单方法是std::bitset将其转换为std::string使用std::bitset::to_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(); });
Run Code Online (Sandbox Code Playgroud)
正如评论中所指出的,如果bitset足够小以适应a,unsigned long long那么你可以使用std::bitset::to_ullong和比较unsigned long longs而不是字符串.