2010-04-26 5 views
0

J'ai une fonction où j'utilise bitset.Maintenant j'ai besoin de le convertir en un bitet dynamique .. mais je ne sais pas comment. Quelqu'un peut-il m'aider?bitset à bitset dynamique

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; 
} 

Répondre

3

La différence n'est pas 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

... et utilisez 'dynamic_bitset' au lieu de' string'. ('dynamic_bitset' implémente' operator <') – Potatoswatter

+0

D'accord, utiliser' dynamic_bitset' et convertir en 'std :: string' uniquement lorsque cela est nécessaire. –