如何在boost :: dynamic_bitset<>中查找一个的第一个和最后一个外观

时间:2012-11-23 09:42:17

标签: c++ boost

我需要 boost :: dynamic_bitset<> 中第一个和最后一个出现1的索引,首先很容易找到 size_type find_first()const 。如何找到最后一个,我是否需要以相反的顺序迭代或创建新的,或者有更简单的方法找到技巧?

2 个答案:

答案 0 :(得分: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;
   }
}

答案 1 :(得分:1)

我已经使用方法find_prev()find_last()为boost :: dynamic_bitset设置了票证。 你可以从boost trac获得这个补丁:Ticket #9352