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

Сортировка списка строк с использованием стандартных алгоритмов библиотеки STL - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
asdasdasdasdgg
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 10
17.03.2013, 13:42     Сортировка списка строк с использованием стандартных алгоритмов библиотеки STL #1
Сортировка слов по количеству в них букв 'А'.
Сортировка списка строк с использованием стандартных алгоритмов библиотеки STL.

Мне не полностью программу. А реализацию данной функции.

Вот эта выполняет сортировку слов по алфавиту по возрастанию... Возможно ли её переделать, чтобы выполнялась сортировка по кол-ву букв 'А' в слове?

C++
1
2
3
4
5
6
7
bool operator<(SYLLABLE syllable1, SYLLABLE syllable2) {
bool result = syllable1.Word < syllable2.Word;
return result;
}
void IT::sort() {       
std::sort(this->Syllables.begin(), this->Syllables.end());
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
17.03.2013, 14:10     Сортировка списка строк с использованием стандартных алгоритмов библиотеки STL #2
asdasdasdasdgg, вариантов много. Первое, что приходит в голову это функтор.
asdasdasdasdgg
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 10
17.03.2013, 14:12  [ТС]     Сортировка списка строк с использованием стандартных алгоритмов библиотеки STL #3
а можно реализацию , если не сложно
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
17.03.2013, 14:13     Сортировка списка строк с использованием стандартных алгоритмов библиотеки STL #4
Могу предложить что то вроде такого:
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>
#include <vector>
 
auto print = [](const std::vector<std::string>& v)
{
    for (auto& x : v) std::cout<<x<<" ";
    std::cout<<"\n";
};
 
int main()
{
    std::vector<std::string> vs = {"damba", "laso", "catala", "qaaaaaq", "with", "abc"};
    std::cout<<"Before: "; print(vs);
    std::sort(vs.begin(), vs.end(), [](const std::string& lhs, const std::string& rhs) -> bool
    {
        if (std::count(lhs.begin(), lhs.end(), 'a') > std::count(rhs.begin(), rhs.end(), 'a'))
            return true;
        else
            return false;
    });
    std::cout<<"After: "; print(vs);
    
    return 0;
}
asdasdasdasdgg
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 10
17.03.2013, 14:34  [ТС]     Сортировка списка строк с использованием стандартных алгоритмов библиотеки STL #5
можете оформить как мой код записан?

что такое?
Цитата Сообщение от yuron_477 Посмотреть сообщение
auto print = [](const std::vector<std::string>& v)
{
* * for (auto& x : v) std::cout<<x<<" ";
* * std::cout<<"\n";
};
Добавлено через 4 минуты
Как я понял надо вот так, но не уверен... Вроде правильно работает


C++
1
2
3
4
5
6
7
8
9
bool operator<(SYLLABLE syllable1, SYLLABLE syllable2) {
count(syllable1.Word.begin(), syllable1.Word.end(), 'а') < count(syllable2.Word.begin(), syllable2.Word.end(), 'а')  ;
return count(syllable1.Word.begin(), syllable1.Word.end(), 'а') < count(syllable2.Word.begin(), syllable2.Word.end(), 'а');
}
 
 
void IT::sort() {       
std::sort(this->Syllables.begin(), this->Syllables.end());
}
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
17.03.2013, 14:38     Сортировка списка строк с использованием стандартных алгоритмов библиотеки STL #6
Честно говоря, ваш код какой то бред.

Добавлено через 1 минуту
auto print = [](const std::vector<std::string>& v) - это просто функция, которая печатает слова
asdasdasdasdgg
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 10
17.03.2013, 16:31  [ТС]     Сортировка списка строк с использованием стандартных алгоритмов библиотеки STL #7
а работает...

Добавлено через 45 минут
может кто переделать мой код?

Добавлено через 47 минут
Цитата Сообщение от asdasdasdasdgg Посмотреть сообщение
bool operator<(SYLLABLE syllable1, SYLLABLE syllable2) {
bool result = syllable1.Word < syllable2.Word;
return result;
}
void IT::sort() {
std::sort(this->Syllables.begin(), this->Syllables.end());
}
Переделайте этот код, чтобы сортировал по букве 'а', пожалуйста... Или киньте свой вариант сортировки по букве 'а'.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.03.2013, 16:32     Сортировка списка строк с использованием стандартных алгоритмов библиотеки STL
Еще ссылки по теме:

C++ Работа с одномерным массивом с использованием контейнерных классов и алгоритмов библиотеки
C++ Удаление елемента списка с использованием итератора. STL
Библиотека стандартных шаблонов STL C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
17.03.2013, 16:32     Сортировка списка строк с использованием стандартных алгоритмов библиотеки STL #8
Цитата Сообщение от asdasdasdasdgg Посмотреть сообщение
Переделайте этот код, чтобы сортировал по букве 'а', пожалуйста... Или киньте свой вариант сортировки по букве 'а'.
Цитата Сообщение от go Посмотреть сообщение
вариантов много. Первое, что приходит в голову это функтор.
Как это сделать я сказал. В чем трудности?
Yandex
Объявления
17.03.2013, 16:32     Сортировка списка строк с использованием стандартных алгоритмов библиотеки STL
Ответ Создать тему
Опции темы

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