2013-10-10 1 views
4

Я ищу реализацию битового набора C++, которая может ответить, если бит установлен в диапазоне. std::bitset, vector и boost::dynamic_bitset все дают доступ к отдельным битам, которые я могу контактировать, но это не самый эффективный способ запросить диапазон бит, чтобы спросить, установлен ли бит бит. Мне даже не нужно знаете, какой из них.Как запросить, установлен ли бит в диапазоне в C++ std :: bitset?

bitset b; 
if(b.any(33, 199)) 
{ 
    // ... 
} 

Есть ли библиотека, которая предоставляет это? Я хотел бы запустить некоторые тесты против других реализаций (включая один, который мне, возможно, придется писать), но я не могу найти никаких возможностей для реализации этой функции.

ответ

-1

Битовый набор C++ 11 предоставляет метод any(), который вы используете, но если это не вариант, просто используйте b.to_ulong() и проверьте, не ноль.

+0

Можете ли вы предоставить ссылку? Я вижу 'any()' в ссылке, но не один, основанный на диапазоне бит. – JaredC

+1

std :: bitset :: any(): http://en.cppreference.com/w/cpp/utility/bitset/all_any_none, вы используете C++ 11, правильно? –

+0

Я могу использовать C++ 11, но я не думаю, что 'any()' вы связаны с поддержкой ** диапазоны **. То есть он не может ответить на вопрос «какой-либо бит в диапазоне [x, y] установлен?». – JaredC