Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Сортировка строк

10K
29 сентября 2009 года
Schuler
42 / / 04.04.2007
Извиняюсь, существует ли возможность в C++ Builder встроенная функция сортировки по алфавиту, если да то какая, как её подключить и как использовать.
602
29 сентября 2009 года
KPI Student
265 / / 16.12.2006
В С++ (любом) существует встроенная возможность сортировать почти что угодно, и как угодно =)

Если вам охота как можно легче отсортировать строки - используйте контейнер, который хранит значения в отсортированном порядке. Где-то так:

Код:
#include <iostream>
#include <string>
#include <set>

typedef std::set< std::string > StringSet;

int main()
{
    const char* a[] = {"first", "second", "third", "42"};
    StringSet strings;
   
    // заполнение массива
    for (size_t i=0; i<sizeof(a)/sizeof(a[0]); i++)
        strings.push( a );

    // готов отсортированный набор
    for (StringSet::iterator it=strings.begin(); it!=strings.end(); it++)
        std::cout << *it << "; ";

    std::cin.get();

    return 0;
}


На сколько я помню, для set нет оператора[], если он вам позарез нужен - никто не мешает использовать std::vector<std::string> в паре с std::sort

Код:
#include <vector>
#include <algorithm>
#include <string>
#include <iostream>

typedef std::vector< std::string > StringArray;

int main()
{
    const char* a[] = {"first", "second", "third", "42"};
    StringArray strings;
   
    // заполнение массива
    for (size_t i=0; i<sizeof(a)/sizeof(a[0]); i++)
        strings.push( a );

    // сортируем массив
    std::sort( strings.begin(), strings.end() );

   // готов
   for (StringArray::iterator it=strings.begin(); it!=strings.end(); it++)
        std::cout << *it << "; ";

   // *** вполне можно юзать cout << strings[..];

    std::cin.get();
    return 0;
}
87
29 сентября 2009 года
Kogrom
2.7K / / 02.02.2008
KPI Student, советую заполнять STL-контейнер подходящим для этого конструктором этого контейнера, а не в цикле for.
602
29 сентября 2009 года
KPI Student
265 / / 16.12.2006
Точно. Тогда вообще красота:

 
Код:
const char* a[SIZE] = { ... };
StringArray strings( a, a+SIZE );
StringSet   strings( a, a+SIZE );
10K
30 сентября 2009 года
Schuler
42 / / 04.04.2007
Всем огромное слово.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог