Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
2 / 2 / 1
Регистрация: 26.08.2015
Сообщений: 45

Сравнение списков

28.11.2016, 06:19. Показов 1843. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Попросили на писать программу для сравнения списоков.

Написал:

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
    TStringList *list1 = new TStringList;
    list1->Sorted = true;
    list1->Duplicates = System::Classes::dupIgnore;
    TStringList *list2 = new TStringList;
    list2->Sorted = true;
    list2->Duplicates = System::Classes::dupIgnore;
    list1->LoadFromFile(GetCurrentDir()+"\\database.txt");
    list2->LoadFromFile(GetCurrentDir()+"\\new_list.txt");
    for (int i = 0; i < list2->Count; i++) {
        String temp = list2->Strings[i];
        int tempi;
        if (list1->Find(temp,tempi)) {
            list2->Delete(i);
            i = i-1;
        }
        else
        {
            list1->Add(temp);
        }
    }
 
    list2->SaveToFile(GetCurrentDir()+"\\new_list.txt");
    if (Form1->CheckBox1->Checked==true) {
        list1->SaveToFile(GetCurrentDir()+"\\database.txt");
    }
    list1->Clear();
    list2->Clear();
    list1->Free();
    list2->Free();

Жалуются что список 1млн и 1.5млн сравниваются почти час. Возможно ли ускорить?

Добавлено через 5 минут
Есть 2 списка. database.txt и new_list.txt.
Нужно удалить из списка 2 все строки которые встречаются в списке 1. Сохранить и дописать список 2 к списку 1.


Не смог отредактировать сообщение тк прошло 5 мин(
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.11.2016, 06:19
Ответы с готовыми решениями:

Сравнение списков
Есть 2 списка (стринг листа) 1 список 1 2 3 1 1 2 и

Сравнение списков
Написать функцию, которая проверяет, состоят ли два заданных списка из одних и тех же элементов (независимо от порядка их расположения) ...

Сравнение списков
Добрый день. Есть два списка, которые надо добавить в третий. Например, Список один: attribute1, слово attribute2, слово2 ...

30
 Аватар для John999
230 / 113 / 79
Регистрация: 17.10.2016
Сообщений: 312
28.11.2016, 14:58
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Avazart Посмотреть сообщение
Потому что reserve не используешь скорее всего.
Зачем резерв, сразу же через конструктор заполняю.
C++
1
std::vector<std::string> list1(std::istream_iterator<std::string>(infile1)
C++
1
std::vector<std::string> vecDif(1000000);
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,184
Записей в блоге: 3
28.11.2016, 14:58
Цитата Сообщение от Avazart Посмотреть сообщение
Мм а там CLANG x32
Ну они с первым Berlin -ом хвастались, что наконец то смогли перевести без косяков Clang на 32 (а как там внутри я не знаю).......
А теперь пообещали что в 2017 всех ждет с++17
1
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
28.11.2016, 15:03
Цитата Сообщение от John999 Посмотреть сообщение
Зачем резерв, сразу же через конструктор заполняю.
Я не вижу вашего кода с вектором, поэтому лишь предположил.
(Кстати не известно как он еще через конструктор работает).
0
 Аватар для John999
230 / 113 / 79
Регистрация: 17.10.2016
Сообщений: 312
28.11.2016, 15:06
Цитата Сообщение от Avazart Посмотреть сообщение
Я не вижу вашего кода с вектором, поэтому лишь предположил.
код -- второй пост в теме.
Цитата Сообщение от Avazart Посмотреть сообщение
(Кстати не известно как он еще через конструктор работает).
Это да
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,184
Записей в блоге: 3
28.11.2016, 15:21
Хех, залез в настройки среды,и действительно есть галка для компилятора под 32. ее отжимаешь и все компилируются =)
Миниатюры
Сравнение списков  
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,184
Записей в блоге: 3
28.11.2016, 15:28
Я просто к тому что раньше она и была, но ее трогать начинаешь, и перестает все работать.
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
28.11.2016, 15:30
Цитата Сообщение от John999 Посмотреть сообщение
код -- второй пост в теме.
Во втором посте вообще непонятно зачем было выделять память под 1000000 элементов.
C++
1
2
3
4
5
std::vector<std::string> vecDif(1000000);       
std::vector<std::string>::iterator it;
 
it = std::set_difference( list2.begin(), list2.end(), list1.begin(), list1.end(), vecDif.begin());
vecDif.resize(it - vecDif.begin());
Когда, как я говорил можно reserve + inserter
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33479 / 21577 / 8250
Регистрация: 22.10.2011
Сообщений: 37,040
Записей в блоге: 12
28.11.2016, 15:51
Цитата Сообщение от Avazart Посмотреть сообщение
Я лично не вижу почему указанный код не должен компилиться старым компилятором под x32
Ну вот возьми XE4, и попробуй откомпилировать, увидишь.

Цитата Сообщение от Avazart Посмотреть сообщение
Ну так переписать?
Ну так говорилось (пока ты , как Д'Артаньян, не пришел и не перевернул все с ног на голову) о том, что приведенный код не компилируется, а переписать - это можно и из вот такого:
C++
1
{}
, давай я во всех темах буду это постить, и добавлять: "кому чего надо - добавьте, это же само собой разумеется"
0
 Аватар для John999
230 / 113 / 79
Регистрация: 17.10.2016
Сообщений: 312
28.11.2016, 15:57
Цитата Сообщение от Avazart Посмотреть сообщение
зачем было выделять память под 1000000
чтобы память не перераспределять.там файлы у меня большие были почти 1,5 млн строк.

Цитата Сообщение от Avazart Посмотреть сообщение
it = std::set_difference( list2.begin(), list2.end(), list1.begin(), list1.end(), vecDif.begin());
vecDif.resize(it - vecDif.begin());
этож я разницу получаю через std::set_difference, зачем здесь reserve + inserter...
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
28.11.2016, 15:59
Код может не компилироваться и из-за отсутствия упущенного одного символа ; но это не означает что нужно разводить панику типа "не компилируется!"

Цитата Сообщение от John999 Посмотреть сообщение
чтобы память не перераспределять.там файлы у меня большие были почти 1,5 млн строк.
Что бы память не перераспределять есть reserve() конструировать 1000000 нет смысла.
0
 Аватар для John999
230 / 113 / 79
Регистрация: 17.10.2016
Сообщений: 312
28.11.2016, 16:18
Цитата Сообщение от Avazart Посмотреть сообщение
есть reserve() конструировать 1000000 нет смысла.
да. уже позабыл всё. давно книжки по с++ не читал .
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.11.2016, 16:18

Сравнение Списков
Доброго времени суток! Прошу помочь в следующем: Есть переменные А и В в которых разные списки с данными. Необходимо сравнить...

Сравнение списков
Доброго времени суток! Подскажите, пожалуйста, как написать программу, которая сравнивает по количеству элементов два списка.

Сравнение списков
Добрый день! Помогите пожалуйста. У меня есть 2 разных списка public List&lt;postgreconnect.posgreconnect.Sinxron&gt; newbd = new...

Сравнение списков
Доброго времени суток . Нужен небольшой совет по программе . Есть 2 списка (стандартный STL-кий класс list ) , нужно сравнить их на...

Сравнение списков STL
не работает функция сравнения списков STL, в частности fNumber и sNumber почему-то принимают значение 0 int bigger(list&lt;int&gt;...


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

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Новые блоги и статьи
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru