2016-10-11 4 views
2

Есть ли эффективный способ проверки поддиапазонов в std::bitset? This, похоже, не предлагает.Диапазоны испытаний битов в std :: bitset

I seestd::bitset::any и std::bitset:all (для C++ 11), но они предназначены для всего набора, а не для поддиапазона. На что я надеялся, была перегруженная версия any и all. Что-то вроде:

bool all(size_t off, size_t len) const; 

std::bitset::test также только один бит. Теоретически, я мог бы построить биты для бит twiddle, но эти биты будут достаточно большими, и это может быть неразумно.

Мысли?

Спасибо!

+0

Вот аналогичный [родственный вопрос] (/ q/39673347) об эффективном определении диапазонов. –

ответ

1

Это (по крайней мере, теоретически) возможно, что ваша стандартная библиотека имеет версию std::all_of, std::any_of и std::none_of алгоритмов специализированных на std::bitset::iterator, которые делают использование знаний библиотеки из внутренностей, чтобы обеспечить более эффективную реализацию, чем вы можете себе.

Если нет, это может стоить ваших усилий, чтобы писать и вносить такие специализации. Предполагая, конечно, что ваша стандартная библиотека принимает такие взносы на условиях, которые вы согласитесь.

+0

'bitset' не имеет итераторов. –

+0

А, хорошо. Вот тогда одно из существенных различий между 'std :: bitset',' std :: array 'и' std :: vector '. И этот ответ действительно ничего не способствует. Если есть достаточные варианты использования, возможно, это может быть что-то предложить в качестве запроса расширения для стандартной библиотеки. –