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

Реализовать двунаправленный список в духе списка из STL - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ порядок в выражении http://www.cyberforum.ru/cpp-beginners/thread241378.html
a.x < b.x || a.x == b.x && a.y < b.y как это понять: как (a.x < b.x || a.x == b.x) && a.y < b.y или a.x < b.x || (a.x == b.x && a.y < b.y) Можно ли это заменить a.x <= b.x && a.y < b.y ?
C++ Перегрузка операторов >>, << Помогите перегрузить операторы ввода и вывода в классе Time. (Я совсем-совсем новичек...)Заранее всем спасибо.class Time { friend ostream &operator<<(ostream &, const Time &); friend istream... http://www.cyberforum.ru/cpp-beginners/thread241375.html
меню сортировок C++
Первый case работает хорошо.а два последних не хотят... #include<iostream> #include<ctime> using namespace std; void main() { srand(time(0)); setlocale(0,"rus"); cout<<" Вариант a - для...
птички C++
на дереве сидит n(0<n<1000000)птичек .они по очереди поют натуральные цифра,начиная 1-го.во время каждой следующей песни улетает то количество птичек,какое число они поют.если количество оставшихся...
C++ Поскорее бы. http://www.cyberforum.ru/cpp-beginners/thread241345.html
Точно условие не помню но суть в том что вводится с клавы логическое выражение. например А и Б и (В или С) только или, и и остальные условия тоже буквы. Надо решить выражение. Это на стэки и строки...
C++ Класс "Окружность" с данными центр и радиус окружности. Вычислить длину и площадь окружности. Объявить класс и определить для него конструктор по умолчанию, конструктор инициализации. Определить функции-члены класса для ввода и вывода членов-данных внутри объявления класса, функции расчета.... подробнее

Показать сообщение отдельно
volovzi
267 / 169 / 8
Регистрация: 14.03.2010
Сообщений: 501
15.02.2011, 01:05
Универсальной сортировкой при помощи итераторов могу поделиться.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
template <typename Iterator>
void quick_sort (Iterator first, Iterator last) {
    Iterator base = first;
    Iterator new_last = last;
        
    if (first != last && first++ != --last) {       
        while (first != last) {
            while (first != last && *first <= *base) ++first;
            while (first != last && *last >= *base) --last;
            
            if (first != last) std::swap(*first, *last);
        }
        
        if (*base > *first) std::swap(*base, *first);
            
        quick_sort(base, first);
        quick_sort(first, new_last);
    }
}
А вот «merge» у тебя неправильно работает. Второй список не просто копируется в первый, а ещё и очищается.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru