2

boost :: dynamic_bitset <>に1の最初と最後の出現のインデックスが必要です。最初は、 size_type find_first()constのように簡単に見つけることができます 。最後を見つける方法、逆の順序で新しいものを繰り返すか作成する必要がありますか、それとも簡単な方法で見つけるためのトリックがありますか?

4

2 に答える 2

1

次のようなトリックを使用できます

#include <iostream>
#include <boost/dynamic_bitset.hpp>

int main()
{
   typedef boost::dynamic_bitset<>::size_type size_type;
   const size_type npos = boost::dynamic_bitset<>::npos;
   boost::dynamic_bitset<> bitset(10, 50);
   size_type first_idx = bitset.find_first();
   size_type current_idx = first_idx;
   if (first_idx != npos)
   {
      do {
         current_idx = bitset.find_next(current_idx);
      } while (bitset.find_next(current_idx) != boost::dynamic_bitset<>::npos);
      std::cout << bitset << " first: " << first_idx << " last: " << current_idx << std::endl;
   }
}
于 2012-11-23T09:52:39.543 に答える
1

find_prev()メソッドとで boost::dynamic_bitset のチケットを配置しましたfind_last()。このパッチはブースト トラックから入手できます:チケット #9352

于 2013-12-09T05:32:35.627 に答える