Язык программирования C++. Вводный курс


Использование обобщенных алгоритмов - часть 3


bird blows blue bounded but by calling coat

daddy daddy daddy dark darkened darkening distant each

either emma eternity falls fear fiery fiery flight

flowing for grow hair hair has he heaven,

held her her her her him him home

houses i immeasurable immensity in in in in

inexpressibly is is is it it it its

journeying lands leave leave life like long looks

magical mean more night, no not not not

now now of of on one one one

passion puts quite red rises row same says

she she shush shyly sight sky so so

star star still stone such tell tells tells

that that the the the the the the

the there there thing through time to to

to to trees unravel untamed wanting watch what

when wind with with you you you you

your your

 

После применения unique() и последующего вызова erase()

вектор texts

выглядит следующим образом:

 

a alice alive almost alternately ancient

and as asks at beautiful becomes bird blows

blue bounded but by calling coat daddy dark

darkened darkening distant each either emma eternity falls

fear fiery flight flowing for grow hair has

he heaven, held her him home houses i

immeasurable immensity in inexpressibly is it its journeying

lands leave life like long looks magical mean

more night, no not now of on one

passion puts quite red rises row same says

she shush shyly sight sky so star still

stone such tell tells that the there thing

through time to trees unravel untamed wanting watch

what when wind with you your

 

Следующая наша задача – отсортировать строки по длине. Для этого мы воспользуемся не алгоритмом sort(), а алгоритмом stable_sort(), который сохраняет относительные положения равных элементов. В результате для элементов равной длины сохраняется алфавитный порядок. Для сортировки по длине мы применим собственную операцию сравнения “меньше”. Один из возможных способов таков:

bool less_than( const string & s1, const string & s2 )

{

   return s1.size() < s1.size();

}

 

void process_vocab( vector<textwords, allocator> *pvec )

{

   // ...

   // отсортировать элементы вектора texts по длине,

   // сохранив также прежний порядок

   stable_sort( texts.begin(), texts.end(), less_than );

 

   // ...

<


Начало  Назад  Вперед