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

gather

Boost , The Boost Algorithm Library , Other 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

Файл заголовка 'boost/algorithm/gather.hpp' содержит два варианта одного алгоритма,<gather>.

<gather()>берет набор элементов, определенных парой итераторов, и перемещает те, которые удовлетворяют их предикату, в положение (называемое поворотом) в последовательности. Алгоритм стабилен. Результатом является пара итераторов, которые содержат элементы, удовлетворяющие предикату.

Interface

Функция<gather>возвращает<std::pair>итераторов, которые обозначают элементы, удовлетворяющие предикату.

Есть две версии: одна занимает два итератора, а другая занимает диапазон.

namespace boost { namespace algorithm {
template <typename BidirectionalIterator, typename Pred>
std::pair<BidirectionalIterator,BidirectionalIterator>
gather ( BidirectionalIterator first, BidirectionalIterator last, BidirectionalIterator pivot, Pred pred );
template <typename BidirectionalRange, typename Pred>
std::pair<typename boost::range_iterator<const BidirectionalRange>::type, typename boost::range_iterator<const BidirectionalRange>::type>
gather ( const BidirectionalRange &range, typename boost::range_iterator<const BidirectionalRange>::type pivot, Pred pred );
}}

Examples

Дана последовательность, содержащая:

0 1 2 3 4 5 6 7 8 9

Призыв к сбору (arr, arr + 10, arr + 4, IsEven) приводит к:

1 3 0 2 4 6 8 5 7 9
    |---|-----|
  first |  second
      pivot

где<first>и<second>— поля пары, возвращаемые вызовом.

Iterator Requirements

<gather>работать на двунаправленных итераторах или лучше. Это требование вытекает из использования<stable_partition>, которое требует двунаправленных итераторов. Некоторые стандартные библиотеки (например, libstdc++ и libc++) имеют реализации<stable_partition>, которые работают с передовыми итераторами. Если это так, то<gather>также будет работать с передовыми итераторами.

Storage Requirements

<gather>использует<stable_partition>, который будет пытаться выделить временную память, но будет работать in-situ, если ее нет.

Complexity

Если же нет памяти, то время работы<O(N logN)>.

Exception Safety
Notes

PrevUpHomeNext

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




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



:: Главная :: Other Algorithms ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 18:21:15/0.057264804840088/1