Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/21: Рейтинг темы: голосов - 21, средняя оценка - 4.62
 Аватар для AzaKendler
214 / 116 / 14
Регистрация: 30.05.2011
Сообщений: 1,772
Записей в блоге: 15

list.merge(

23.09.2011, 11:44. Показов 4423. Ответов 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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
// list_merge.cpp
  // compile with: /EHsc
#include "stdafx.h"
  #include <list>
  #include <iostream>
  
  int main( ) 
  {
     using namespace std;
     list <int> c1, c2, c3;
     list <int>::iterator c1_Iter, c2_Iter, c3_Iter;
     
     c1.push_back( 3 );
     c1.push_back( 6 );
     c2.push_back( 2 );
     c2.push_back( 4 );
     c3.push_back( 5 );
     c3.push_back( 1 );
     //то что ниже добавлено мной, дабы убедиться получу ли я ошибку такую же как в своем примере.если закомментить добавления то ошибки не будет
      c3.push_back( 1112);
       c3.push_back( 323);
        c3.push_back( 124331 );
        // далее все без изменений - пример их хэлпа по студии 10
  
     cout << "c1 =";
     for ( c1_Iter = c1.begin( ); c1_Iter != c1.end( ); c1_Iter++ )
        cout << " " << *c1_Iter;
     cout << endl;
  
     cout << "c2 =";
     for ( c2_Iter = c2.begin( ); c2_Iter != c2.end( ); c2_Iter++ )
        cout << " " << *c2_Iter;
     cout << endl;
  
     c2.merge( c1 );  // Merge c1 into c2 in (default) ascending order
     c2.sort( greater<int>( ) );
     cout << "After merging c1 with c2 and sorting with >: c2 =";
     for ( c2_Iter = c2.begin( ); c2_Iter != c2.end( ); c2_Iter++ )
        cout << " " << *c2_Iter;
     cout << endl;
  
     cout << "c3 =";
     for ( c3_Iter = c3.begin( ); c3_Iter != c3.end( ); c3_Iter++ )
        cout << " " << *c3_Iter;
     cout << endl;
  
     c2.merge( c3, greater<int>( ) );
     cout << "After merging c3 with c2 according to the '>' comparison relation: c2 =";
     for ( c2_Iter = c2.begin( ); c2_Iter != c2.end( ); c2_Iter++ )
        cout << " " << *c2_Iter;
     cout << endl;
 
return 0;
  }

данный код это копи паст из хелпа по студии 10 на тему list.merge().

Вопрос в следующем. Читая про объединение я понял что перед слиянием списки надо отсортировать, и да после этого оно работает. Так же Страуаутсруп пишет что можно слить списки если один не отсортирован(просто поярдок не определен будет) - тоже в дебаге вылетает на ошибку. Так же имеется второй параметр при сортировке - можно как бы задать критерий. И тут в дебаге я натолкнулся на постоянно вылетающую ошибку - последовательность (порядок) не задан. Полез в хелп и там увидел этот пример. И да он работает, но если добавить в список 3 еще несколько циферок, то в дебаге выскочит та же ошибка. Может кто подскажет пачему?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.09.2011, 11:44
Ответы с готовыми решениями:

Аварийное завершение программы при использовании метода merge для list
Подскажите пожалуйста почему в строке 10 получаю аварийное завершение ? int _tmain(int argc, _TCHAR* argv) { list&lt;int&gt;...

Компилятор заменяет самописную merge на std::merge
Доброго времени суток. Возник такой вопрос, пишу свою сортировку слиянием, имеется 2 функции mergeSort и merge. При вызове merge компилятор...

Как пройти по List, отыскать дубликаты и записать их в другой List?
Добрый вечер, у меня есть List из 10 элементов, мне необходимо найти в нем все повторяющиеся элементы и записать в другой List. Если вместо...

4
 Аватар для AzaKendler
214 / 116 / 14
Регистрация: 30.05.2011
Сообщений: 1,772
Записей в блоге: 15
23.09.2011, 11:46  [ТС]
вот ошибка
Миниатюры
list.merge(  
0
 Аватар для kazak
3601 / 2742 / 355
Регистрация: 11.03.2009
Сообщений: 6,300
23.09.2011, 12:01
Цитата Сообщение от AzaKendler Посмотреть сообщение
последовательность (порядок) не задан
Правильно будет "Последовательность не упорядочена"
Цитата Сообщение от AzaKendler Посмотреть сообщение
И да он работает, но если добавить в список 3 еще несколько циферок, то в дебаге выскочит та же ошибка.
Если ты внимательно присмотришься, то увидишь, что в исходном коде все списки упорядочены. Первые два по возрастанию, последний по убыванию. А вот добавление своих циферок в последний список упорядоченность нарушают.
Цитата Сообщение от AzaKendler Посмотреть сообщение
Так же Страуаутсруп пишет что можно слить списки если один не отсортирован(просто поярдок не определен будет) - тоже в дебаге вылетает на ошибку.
Компиляторы не всегда "слушают" Страуструпа. Тут все зависит от прихоти разработчика.
1
 Аватар для AzaKendler
214 / 116 / 14
Регистрация: 30.05.2011
Сообщений: 1,772
Записей в блоге: 15
23.09.2011, 12:11  [ТС]
c2.merge( c3, greater<int>( ) );
разве эта строчка не "пытается" отсортировать на ходу при последнем объединении? Сбой происходит именно на этом, если добавить в 3й список циферок. И мне показалось что сюда 3й список приходит все таки не отсортированным

Добавлено через 2 минуты
Цитата Сообщение от kazak Посмотреть сообщение
А вот добавление своих циферок в последний список упорядоченность нарушают
кажется понял....
короче говоря фуфло это. лучше сразу готовить списки до объединения.

Добавлено через 1 минуту
ты прав...
C++
1
2
3
4
5
6
7
c3.push_back( 50 );
     c3.push_back( 49 );
     //то что ниже добавлено мной, дабы убедиться получу ли я ошибку такую же как в своем примере.
      c3.push_back( 46);
       c3.push_back( 43);
        c3.push_back( 12 );
        // далее все без изменений - пример их хэлпа по студии 10
так..работает
0
 Аватар для kazak
3601 / 2742 / 355
Регистрация: 11.03.2009
Сообщений: 6,300
23.09.2011, 12:20
Насколько я понял msdn, greater не сортирует входной список, а задает порядок элементов в выходном списке.
И выдержка по поводу упорядоченности для merge
Both sequences must be previously ordered by operator<
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.09.2011, 12:20
Помогаю со студенческими работами здесь

Ошибка при компиляции undefined reference to `List<int>::List()'|
Доброго времени суток=) столкнулась с такой проблемой нужно написать шаблон класса. При компиляции выдает ошибку undefined reference to...

Invalid operands of types 'List*' and 'List*' to binary 'operator+'
Я создал список из 4 елементов( 3.5.1.9)и выбивает такая ошибка когда хочу посчитать сумму предпоследнего и последнего елемента.Помогите...

Сделать реализацию list (классы node и list) на шаблонах
Помогите написать прогу Необходимо: Сделать реализацию list (классы node и list) на шаблонах. 1.push_back 2.push_front 3.size ...

у меня созданы 2 фаила - один с классом (называется list.h), а другой с реализациями функций (list.cpp).
у меня созданы 2 фаила - один с классом (называется list.h), а другой с реализациями функций (list.cpp). хочу создать клиентский фаил...

Записать в файл list (очередь) объектов, в которых содержатся строки string, и считать с файла обратно в list
Извините подскажите пожалуйста, как записать list(очередь) объектов в которых содержаться string, и считать с файла обратно в list;...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru