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

C++11 Algorithms

Boost , The Boost Algorithm Library , The Boost Algorithm Library

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

Файл заголовка 'boost/algorithm/cxx11/all_of.hpp' содержит четыре варианта одного алгоритма,<all_of>. Алгоритм проверяет все элементы последовательности и возвращает истинность, если все они имеют общее свойство.

Распорядок<all_of>принимает последовательность и предикат. Он вернется истинным, если предикат вернется истинным при применении к каждому элементу в последовательности.

Рутина<all_of_equal>принимает последовательность и значение. Он вернется истинным, если каждый элемент в последовательности будет сравниваться с пройденным значением.

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

interface

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

namespace boost { namespace algorithm {
template<typename InputIterator, typename Predicate>
	bool all_of ( InputIterator first, InputIterator last, Predicate p );
template<typename Range, typename Predicate>
	bool all_of ( const Range &r, Predicate p );
}}

Функция<all_of_equal>похожа на<all_of>, но вместо того, чтобы взять предикат для проверки элементов последовательности, требуется значение для сравнения.

namespace boost { namespace algorithm {
template<typename InputIterator, typename V>
	bool all_of_equal ( InputIterator first, InputIterator last, V const &val );
template<typename Range, typename V>
	bool all_of_equal ( const Range &r, V const &val );
}}

Examples

Следовательно,<c>, содержащее<{0,1, 2,3,14,15}>,

bool isOdd ( int i ) { return i % 2 == 1; }
bool lessThan10 ( int i ) { return i < 10; }
using boost::algorithm;
all_of ( c, isOdd ) --> false
all_of ( c.begin (), c.end (), lessThan10 ) --> false
all_of ( c.begin (), c.begin () + 3, lessThan10 ) --> true
all_of ( c.end (), c.end (), isOdd ) --> true  // empty range
all_of_equal ( c, 3 ) --> false
all_of_equal ( c.begin () + 3, c.begin () + 4, 3 ) --> true
all_of_equal ( c.begin (), c.begin (), 99 ) --> true  // empty range

Iterator Requirements

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

Complexity

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

Exception Safety

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

Notes
  • Процедура<all_of>также доступна как часть стандарта C++11.
  • <all_of>и<all_of_equal>оба возвращаются истинными для пустых диапазонов, независимо от того, что было передано для проверки против. Когда в последовательности нет элементов для тестирования, все они удовлетворяют условию, против которого нужно протестировать.
  • Второй параметр<all_of_value>является шаблонным параметром, а не выведенным из первого параметра<std::iterator_traits<InputIterator>::value_type>, поскольку он обеспечивает большую гибкость для абонентов и использует встроенные сравнения для типа, на который указывает итератор. Функция определяется как возвращающая истинность, если для всех элементов в последовательности выражение<*iter ==val>оценивает истинность (где<iter>является итератором для каждого элемента в последовательности).

PrevUpHomeNext

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




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



:: Главная :: The Boost Algorithm Library ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 22:28:22/0.0069789886474609/0