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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
asdasdasdasdgg
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 10
#1

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

17.03.2013, 13:42. Просмотров 1129. Ответов 7
Метки нет (Все метки)

Сортировка слов по количеству в них букв 'А'.
Сортировка списка строк с использованием стандартных алгоритмов библиотеки 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());
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.03.2013, 13:42     Сортировка списка строк с использованием стандартных алгоритмов библиотеки STL
Посмотрите здесь:

C++ Реализация алгоритмов библиотеки STL
C++ Сортировка строк STL
Сортировка строк не используя стандартных функций C++
C++ Наследование стандартных классов STL
Сортировка массива с использованием алгоритма стандартной библиотеки шаблонов Sort() C++
C++ Структура, с использованием контейнера библиотеки STL
C++ Работа с одномерным массивом с использованием контейнерных классов и алгоритмов библиотеки
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
go
Эксперт C++
3584 / 1364 / 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
1425 / 762 / 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
1425 / 762 / 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++ Удаление елемента списка с использованием итератора. STL
Использование стандартных компонентов stl C++
Библиотека стандартных шаблонов STL C++
Сортировка списка (STL) C++
C++ Сортировка группы по фамилии. Библиотеки STL

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

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

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