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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 210, средняя оценка - 4.73
Evg
Эксперт CАвтор FAQ
17542 / 5780 / 370
Регистрация: 30.03.2009
Сообщений: 15,920
Записей в блоге: 26
#1

Сортировка vector'а - C++

14.09.2010, 11:19. Просмотров 29394. Ответов 15
Метки нет (Все метки)

В си можно сортировать массивы используя функцию qsort (и не писать собственных велосипедов). В Си++ такое не проканает в случае сортировки массива классов, потому как копирования данный внутри qsort'а будут проходить мимо конструкторов и операторов присваивания класса. А если у нас не массив, а vector, то труба полная. Т.е. qsort отпадает сразу. Есть ли с тандартной библиотечной поддержке Си++ какое-то средство для сортировки vector'а?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.09.2010, 11:19     Сортировка vector'а
Посмотрите здесь:

Сортировка vector - C++
Здравствуйте. Заполняю вот так vector: std::vector<string> s; s.push_back("Cat"); s.push_back("Dog"); s.push_back("Rotter"); ...

Сортировка в Vector - C++
Здравствуйте. Сделал что-то типа телефонной книги. Считываю из файла имя, фамилию строками, номер телефона, год рождения - int. Записываю...

Сортировка vector и list - C++
Здравствуйте. vector<int> функцией STL медленнее сортируется, чем list<int> собственным методом. #include <cstdlib> #include...

сортировка слов vector - C++
Добрый день, условие задачи: Все слова исходного файла input.txt записать в файл output.txt без повторений, расположив их в порядке...

Сортировка массива (vector) - C++
Мне нужно отсортировать по алфавиту строки. При сортировке нужно учитывать только первые 10 символов из строки. Помогите с функцией.. Вот...

Сортировка по одному из полей std::vector - C++
Подскажите пожалуйста! Задача: Имеется класс Person с полями: Family, Name, BirthDay, Sex, ExperienceTime (Фамилия, имя, дата...

Sort vector, сортировка по двум полям структуры - C++
Поскажите как отсортировать если: struct DATA{ string fir; string sec; double sm; }; vector <DATA> vec; vector...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,364
14.09.2010, 11:57     Сортировка vector'а #2
Разумеется.
C++
1
2
3
std::vector<что-то> vec;
// ......
std::sort(vec.begin(), vec.end(), <предикат сортировки>);
Evg
Эксперт CАвтор FAQ
17542 / 5780 / 370
Регистрация: 30.03.2009
Сообщений: 15,920
Записей в блоге: 26
14.09.2010, 12:01  [ТС]     Сортировка vector'а #3
ОК. Попробуем-с
http://www.cplusplus.com/reference/algorithm/sort/
Manjak
269 / 175 / 7
Регистрация: 12.03.2010
Сообщений: 494
14.09.2010, 16:18     Сортировка vector'а #4
Для полной сортировки всего вектора vector<...>::sort или в крайнем случае std::sort(итераторы произвольного доступа), в классе должен быть определен оператор сравнения (я в большинстве случаев просто перегружаю < и == и включаю namespace std::rel_ops) или предикат для сравнения
Evg
Эксперт CАвтор FAQ
17542 / 5780 / 370
Регистрация: 30.03.2009
Сообщений: 15,920
Записей в блоге: 26
14.09.2010, 16:22  [ТС]     Сортировка vector'а #5
Цитата Сообщение от Manjak Посмотреть сообщение
Для полной сортировки всего вектора vector<...>::sort или в крайнем случае std::sort(итераторы произвольного доступа), в классе должен быть определен оператор сравнения (я в большинстве случаев просто перегружаю < и == и включаю namespace std::rel_ops) или предикат для сравнения
Вот тут http://www.cplusplus.com/reference/stl/ я что-то не нашёл vector::sort
Vourhey
Почетный модератор
6477 / 2252 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
14.09.2010, 16:26     Сортировка vector'а #6
Evg, std::sort
Evg
Эксперт CАвтор FAQ
17542 / 5780 / 370
Регистрация: 30.03.2009
Сообщений: 15,920
Записей в блоге: 26
14.09.2010, 16:26  [ТС]     Сортировка vector'а #7
Цитата Сообщение от Vourhey Посмотреть сообщение
Evg, std::sort
Про это CheshireCat уже написал
Manjak
269 / 175 / 7
Регистрация: 12.03.2010
Сообщений: 494
14.09.2010, 16:27     Сортировка vector'а #8
http://msdn.microsoft.com/en-us/libr...h1(VS.80).aspx
Забыл, у вектора нету встроенной сортировки, у него ж итераторы произвольногодоступа
Evg
Эксперт CАвтор FAQ
17542 / 5780 / 370
Регистрация: 30.03.2009
Сообщений: 15,920
Записей в блоге: 26
14.09.2010, 16:30  [ТС]     Сортировка vector'а #9
Это std::sort (о котором уже написали), а не vector::sort
Vourhey
Почетный модератор
6477 / 2252 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
14.09.2010, 16:35     Сортировка vector'а #10
Цитата Сообщение от Evg Посмотреть сообщение
Про это CheshireCat уже написал
Так я и писал, чтобы ты использовал std::sort, зачем тебе vector::sort, которого нет?
Evg
Эксперт CАвтор FAQ
17542 / 5780 / 370
Регистрация: 30.03.2009
Сообщений: 15,920
Записей в блоге: 26
14.09.2010, 16:41  [ТС]     Сортировка vector'а #11
Цитата Сообщение от Vourhey Посмотреть сообщение
Так я и писал, чтобы ты использовал std::sort, зачем тебе vector::sort, которого нет?
Так и надо писать, а то я не оракул, чтобы догадываться, что ты имел в виду
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,364
14.09.2010, 17:09     Сортировка vector'а #12
Для правильного сравнения элементов вектора, если они имеют нетривиальный класс, достаточно перегрузить bool Мой_класс.operator<(const Мой_класс& object).
Evg
Эксперт CАвтор FAQ
17542 / 5780 / 370
Регистрация: 30.03.2009
Сообщений: 15,920
Записей в блоге: 26
14.09.2010, 17:19  [ТС]     Сортировка vector'а #13
Цитата Сообщение от CheshireCat Посмотреть сообщение
Для правильного сравнения элементов вектора, если они имеют нетривиальный класс, достаточно перегрузить bool Мой_класс.operator<(const Мой_класс& object).
Я так понимаю, что это нужно только для случая, когда используется sort с двумя параметрами
Manjak
269 / 175 / 7
Регистрация: 12.03.2010
Сообщений: 494
14.09.2010, 17:47     Сортировка vector'а #14
Да, этот вариант использует std::less , который сравнивает обьекты оператором <
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.09.2010, 20:29     Сортировка vector'а
Еще ссылки по теме:

Сортировка vector<string> без учёта регистра - C++
Мне нужно отсортировать по алфавиту строки без учёта регистра. Не могу разобраться с понижением регистра #include &quot;stdafx.h&quot; #include...

Сортировка строк двумерного std::vector'а в лексикографическом порядке - C++
Позвольте узнать... Возможно ли через vector&lt;vector&lt;double&gt;&gt; и функцию std::sort() отсортировать строки массива в лексикографическом...

vector(выскакивает ошибка "vector iterators incompatible") - C++
Доброго времени суток! имеется следующий код: // obr.cpp : Defines the entry point for the console application. // #include...

Bind vector<vector<A*>> - C++
Привет всем ! вот код struct A { void qwer(int a) { qDebug()&lt;&lt;a; } }; int main(int argc, char...

Поиск в vector < vector <T> > - C++
есть двумерный массив vector &lt; vector &lt;double&gt; &gt; a(size, vector&lt;double&gt;(size, 0)); заполняем рандомом, надо найти индекс последнего...


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

Или воспользуйтесь поиском по форуму:
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
14.09.2010, 20:29     Сортировка vector'а #15
Цитата Сообщение от Manjak Посмотреть сообщение
Да, этот вариант использует std::less , который сравнивает обьекты оператором <
Можно написать также свой функтор сравнения, если не хочется вносить изменений в класс.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <vector>
#include <algorithm>
 
class Foo {
public:
    int data;
};
 
class cmp {
public:
    bool operator() (const Foo &a, const Foo &b) {
        return a.data < b.data;
    }
} compare;
 
int main()
{
    std::vector<Foo> v;
        
    // .....
    
    std::sort(v.begin(), v.end(), compare);
}
Yandex
Объявления
14.09.2010, 20:29     Сортировка vector'а
Ответ Создать тему
Опции темы

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