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

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

28.11.2016, 06:19. Показов 1727. Ответов 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,182
Записей в блоге: 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,182
Записей в блоге: 3
28.11.2016, 15:21
Хех, залез в настройки среды,и действительно есть галка для компилятора под 32. ее отжимаешь и все компилируются =)
Миниатюры
Сравнение списков  
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,182
Записей в блоге: 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
33456 / 21556 / 8248
Регистрация: 22.10.2011
Сообщений: 37,009
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
GitDOS: Когда я решил скрестить MS-DOS, GitHub и Claude
MaGz GoLd 08.07.2026
Привет, Киберфорум! Хочу поделиться своим проектом, который, надеюсь, вас заинтересует. GitDOS — это веб-приложение, которое позволяет запускать DOS в браузере с тремя крутыми фичами: диски живут в. . .
Учебный мини "цифровой двойник" = (Сервер = Java + Flask_питон )+(3D = Гугловскаая 4T nvideo + google colab) +( WMS = Odoo на Docker)
anaschu 07.07.2026
Увидел в требованиях к вакансии создателя имитационных моделей связку (REst + Api + WMS + Anylogic + питон + 3D Nvideo), и решил посмотреть, что это такое. Из этого всего я работал более менее. . .
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал. Оно само - говорит. Кто слышит тот слышит.
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru