Форум программистов, компьютерный форум CyberForum.ru

Сортировка строк STL - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
parkito
 Аватар для parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 685
19.09.2011, 23:21     Сортировка строк STL #1
Подскажите пожалуйста как работает эта программа

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
#include <string>                 
#include <algorithm>
using namespace std;
                                   
char* names[] = { "Сергей", "Татьяна", "Елена",
                  "Дмитрий", "Михаил", "Владимир" };
 
bool alpha_comp(char*, char*);      
 
int main()
   {
   sort(names, names+6, alpha_comp); 
 
   for(int j=0; j<6; j++)     
      cout << names[j] << endl;
         cin.get();
   cin.get();
   return 0;
   }
 
bool alpha_comp(char* s1, char* s2) 
                                     
   {
   return ( strcmp(s1, s2)<0 ) ? true : false;
   }

Мне не понятны вот эти строки. Почему они такие какие есть ?

C++
1
bool alpha_comp(char* s1, char* s2)
C++
1
2
   for(int j=0; j<6; j++)     
      cout << names[j] << endl;
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
19.09.2011, 23:40     Сортировка строк STL #2
Цитата Сообщение от parkito Посмотреть сообщение
bool alpha_comp(char* s1, char* s2)
а что вассдесь смущет? это заголовок функции - компаратора


Цитата Сообщение от parkito Посмотреть сообщение
for(int j=0; j<6; j++)
cout << names[j] << endl;
вывод на экран
parkito
 Аватар для parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 685
19.09.2011, 23:43  [ТС]     Сортировка строк STL #3
Цитата Сообщение от Jupiter Посмотреть сообщение
а что вассдесь смущет? это заголовок функции - компаратора
Я привык, что сам выбираю что посылать в функцию. Но Здесь не понятно что посылается.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
20.09.2011, 09:48     Сортировка строк STL #4
parkito, Непонятно? Почитайте побольше про std::sort.
При каждом вызове функции сравнения туда посылаются две строки. Распечатайте внутри функции - поймете.
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
20.09.2011, 13:37     Сортировка строк STL #5
parkito, в выражении
Цитата Сообщение от parkito Посмотреть сообщение
sort(names, names+6, alpha_comp);
первые два аргумента - это начало и конец диапазона, который обрабатывает алгоритм sort, а третий - функция-предикат. В случае с алгоритмом sort, эта функция используется для проверки того, что первый аргумент, переданный ей при вызове (из sort), должен стоять перед вторым. Таким образом, используя один и тот же алгоритм (sort), при помощи предиката мы можем менять правила сортировки (по возрастанию, по убыванию, строки по алфавиту, наборы значений по ключу и т.д.)
Yandex
Объявления
20.09.2011, 13:37     Сортировка строк STL
Ответ Создать тему
Опции темы

Текущее время: 04:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru