Читаем C++ для начинающих полностью

next_permutation( BidirectionalIterator first,

BidirectionalIterator last );

template class BidirectionalIterator, class Compare

bool

next_permutation( BidirectionalIterator first,

BidirectionalIterator last, class Compare );

next_permutation() берет последовательность, ограниченную диапазоном [first,last), и, считая ее перестановкой, возвращает следующую за ней (о том, как упорядочиваются перестановки, говорилось в разделе 12.5). Если следующей перестановки не существует, алгоритм возвращает false, иначе - true. В первом варианте для определения следующей перестановки используется оператор “меньше” в классе элементов контейнера, а во втором - операция сравнения comp. Последовательные обращения к next_permutation() генерируют все возможные перестановки только в том случае, когда исходная последовательность отсортирована. Если бы в показанной ниже программе мы предварительно не отсортировали строку musil, получив ilmsu, то не удалось бы сгенерировать все перестановки.

#include algorithm

#include vector

#include iostream.h

void print_char( char elem ) { cout elem ; }

void (*ppc)( char ) = print_char;

/* печатается:

ilmsu ilmus ilsmu ilsum ilums ilusm imlsu imlus

imslu imsul imuls imusl islmu islum ismlu ismul

isulm isuml iulms iulsm iumls iumsl iuslm iusml

limsu limus lismu lisum liums liusm lmisu lmius

lmsiu lmsui lmuis lmusi lsimu lsium lsmiu lsmui

lsuim lsumi luims luism lumis lumsi lusim lusmi

milsu milus mislu misul miuls miusl mlisu mlius

mlsiu mlsui mluis mlusi msilu msiul msliu mslui

msuil msuli muils muisl mulis mulsi musil musli

silmu silum simlu simul siulm siuml slimu slium

slmiu slmui sluim slumi smilu smiul smliu smlui

smuil smuli suilm suiml sulim sulmi sumil sumli

uilms uilsm uimls uimsl uislm uisml ulims ulism

ulmis ulmsi ulsim ulsmi umils umisl umlis umlsi

umsil umsli usilm usiml uslim uslmi usmil usmli

*/

int main()

{

vectorchar,allocator vec(5);

// последовательность символов: musil

vec[0] = 'm'; vec[1] = 'u'; vec[2] = 's';

vec[3] = 'i'; vec[4] = 'l';

int cnt = 2;

sort( vec.begin(), vec.end() );

for_each( vec.begin(), vec.end(), ppc ); cout "\t";

// генерируются все перестановки строки "musil"

while( next_permutation( vec.begin(), vec.end()))

{

for_each( vec.begin(), vec.end(), ppc );

cout "\t";

if ( ! ( cnt++ % 8 )) {

cout "\n";

cnt = 1;

}

}

cout "\n\n";

return 0;

}

<p>Алгоритм nth_element()</p>

template class RandomAccessIterator

void

nth_element( RandomAccessIterator first,

RandomAccessIterator nth,

RandomAccessIterator last );

template class RandomAccessIterator, class Compare

void

nth_element( RandomAccessIterator first,

RandomAccessIterator nth,

RandomAccessIterator last, Compare comp );

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных