连接2个位集的最佳方法是什么?

例如我有

boost::dynamic_bitset<> test1( std::string("1111") );
boost::dynamic_bitset<> test2( std::string("00") );

它们应连接到一个三位Bitset test3中,然后保持
111100

解决方案应使用boost::dynamic_bitset。如果该解决方案与std::bitset一起使用,那就太好了。连接位时应重点关注性能。

更新:
我已经比较了这两种方法(我和Neil的stringmethod和Messenger的shiftmethod),并且stringmethod的速度要快得多(10++)。代码在这里:
http://pastebin.com/HfpfYfy8

我希望Pastebin可以发布较长的代码 list 。如果有更好的方法,请与我联系。

最佳答案

对于标准位集,类似:

#include <bitset>
#include <string>
#include <iostream>
using namespace std;

template <size_t N1, size_t N2 >
bitset <N1 + N2> concat( const bitset <N1> & b1, const bitset <N2> & b2 ) {
    string s1 = b1.to_string();
    string s2 = b2.to_string();
    return bitset <N1 + N2>( s1 + s2 );
}

int main() {
    bitset <4> a( string("1010") );
    bitset <2> b( string("11") );
    cout << concat( a, b ) << endl;
}

关于c++ - 串联boost::dynamic_bitset或std::bitset,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3061721/

10-15 01:06