Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

is_partitioned

Boost , The Boost Algorithm Library , C++11 Algorithms

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Файл заголовка 'is_partitioned.hpp' содержит два варианта одного алгоритма,<is_partitioned>. Алгоритм проверяет, разделена ли последовательность согласно предикату; другими словами, все элементы в последовательности, удовлетворяющие предикату, находятся в начале последовательности.

Распорядок<is_partitioned>принимает последовательность и предикат. Он возвращается истинным, если последовательность разделена в соответствии с предикатом.

<is_partitioned>Появляются в двух формах; первый использует два итератора для определения диапазона. Вторая форма принимает один параметр диапазона и использует Boost. Диапазон, чтобы пройти его.

interface

Функция<is_partitioned>возвращается истинной, если элементы в последовательности разделены в соответствии с их способностью удовлетворять предикату. Есть две версии: одна занимает два итератора, а другая занимает диапазон.

template<typename InputIterator, typename Predicate>
	bool is_partitioned ( InputIterator first, InputIterator last, Predicate p );
template<typename Range, typename Predicate>
	bool is_partitioned ( const Range &r, Predicate p );

Examples

<c>, содержащее<{0,1, 2,3,14,15}>, после чего

bool isOdd ( int i ) { return i % 2 == 1; }
bool lessThan10 ( int i ) { return i < 10; }
is_partitioned ( c, isOdd ) --> false
is_partitioned ( c, lessThan10 ) --> true
is_partitioned ( c.begin (), c.end (), lessThan10 ) --> true
is_partitioned ( c.begin (), c.begin () + 3, lessThan10 ) --> true
is_partitioned ( c.end (), c.end (), isOdd ) --> true  // empty range

Iterator Requirements

<is_partitioned>работает на всех итераторах, кроме выходных итераторов.

Complexity

Оба варианта<is_partitioned>работают вO(N)(линейное) время; то есть они сравниваются с каждым элементом в списке один раз. Если последовательность не будет разделена в какой-либо момент, рутина немедленно прекратится, не изучая остальные элементы.

Exception Safety

Оба варианта<is_partitioned>берут свои параметры по стоимости или по ссылке и не зависят от какого-либо глобального состояния. Таким образом, все процедуры в этом файле обеспечивают сильную гарантию исключения.

Notes
  • Версия рутины на основе итератора<is_partitioned>также доступна как часть стандарта C++11.
  • <is_partitioned>возвращается истинно для пустых диапазонов, независимо от того, какой предикат передается для проверки.

PrevUpHomeNext

Статья is_partitioned раздела The Boost Algorithm Library C++11 Algorithms может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: C++11 Algorithms ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 04:17:19/0.0037360191345215/0