2010-04-26 83 views
0

我有一个函数,我使用bitset.Now我需要将其转换为动态位集.. 但我不知道如何。 有人能帮助我吗?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 2010-04-26 03:00:28

+0

同意,只有在需要时才使用'dynamic_bitset'并转换为'std :: string'。 – 2010-04-26 08:39:05