2010-04-26 2 views
0

У меня есть функция, где я использую bitet.Now мне нужно преобразовать его в динамический битсет. , но я не знаю как. Может кто-нибудь мне помочь?bitset to dynamic bitset

set<string> generateCandidates(set<string> ck,unsigned int k){ 
set<string> nk ; 
for (set<string>::const_iterator p = ck.begin();p != ck.end(); ++p){ 
    for (set<string>::const_iterator q = ck.begin();q != ck.end(); ++q){ 
     bitset<4> bs1(*p); 
     bitset<4> bs2(*q); 
     bs1|= bs2 ; 
     if(bs1.count() == k){ 
      nk.insert(bs1.to_string<char,char_traits<char>,allocator<char> >()); 
     } 
    } 
} 
return nk; 
} 

ответ

3

Разница не that big:

boost::dynamic_bitset<> bs1(*p); 
boost::dynamic_bitset<> bs2(*q); 
bs1 |= bs2; 
if(bs1.count() == k){ 
    std::string str; 
    boost::to_string(bs1, str); 
    nk.insert(str); 
} 
+1

... и использовать 'dynamic_bitset' вместо' string'. ('dynamic_bitset' реализует' operator <') – Potatoswatter

+0

Согласовано, используя' dynamic_bitset' и преобразование в 'std :: string' только тогда, когда это было бы лучше. –