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

Алгоритм по типу экселевского vlookup. Посоветуйте, как скомпоновать 2 файлика - C++

Восстановить пароль Регистрация
 
Excogit8er
2 / 2 / 0
Регистрация: 23.10.2012
Сообщений: 66
25.12.2012, 20:28     Алгоритм по типу экселевского vlookup. Посоветуйте, как скомпоновать 2 файлика #1
Hi all.

Думаю, как лучше сделать следующее (понятно, что можно в Excel'е через vlookup, а как программно?)
в общем, есть колонка данных в одном файле:

101 : name1
102 : name2
103 : name3
104 : name4
105 : name5
106 : name6

И есть второй файл, где идентификаторы те же (но, разумеется, не в таком же порядке, как в первом файле),
а вторая колонка текста другая:

106 : street6
102 : street2
104 : street4
101 : street1
105 : street5
103 : street6

Как проще всего совместить информацию из этих 2х файлов?
чтобы получить следующее:

101 name1 street1
102 name2 street2
103 name3 street3
104 name4 street4
105 name5 street5
106 name6 street6

Какой способ самый простой? Создать массив структур? Из серии:
C++
1
2
3
4
5
6
7
struct person {
string num;
string name;
string street;
};
 
person people[100];
И потом туда считывать построчно? Как-то корявенько...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.12.2012, 20:28     Алгоритм по типу экселевского vlookup. Посоветуйте, как скомпоновать 2 файлика
Посмотрите здесь:

что происходит со старым конструктором когда я создаю новый, пренадлежащий производному типу? (первый конструктор пренадлежит базовому типу) C++
C++ Как определить конверсию к типу?
Как узнать расширение по типу MIME? C++
C++ Как скомпоновать модуль с кодом C++ с Си?
C++ Как присвоить типу char значение string?
C++ как в c++ проверить пренадлежит ли переменная определенному типу?
C++ Как скомпоновать объектные файлы в Code Blocks?
C++ Выражение должно относиться к целочисленному типу или типу перечисления без области видимости

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Avazart
 Аватар для Avazart
6901 / 5141 / 252
Регистрация: 10.12.2010
Сообщений: 22,604
Записей в блоге: 17
26.12.2012, 13:04     Алгоритм по типу экселевского vlookup. Посоветуйте, как скомпоновать 2 файлика #2
Можно через map если id уникален

C++
1
std::map<size_t,std::pair<std::string,std::string> >  people;
Excogit8er
2 / 2 / 0
Регистрация: 23.10.2012
Сообщений: 66
26.12.2012, 15:26  [ТС]     Алгоритм по типу экселевского vlookup. Посоветуйте, как скомпоновать 2 файлика #3
Цитата Сообщение от Avazart Посмотреть сообщение
Можно через map если id уникален

C++
1
std::map<size_t,std::pair<std::string,std::string> >  people;
Почитал про std::map, круто, но интересен алгоритм - а как это работает? Предположим, есть несколько текстовых файлов, связанных ключевым полем (ну, тот же айдишник). Создается структура для всех нужных полей с несколькими элементами string, считывается 1й файл, парсится первая строка из первого файла, заполняется, скажем, string1, string2 и string3 (допустим, это айдишник, имя и номер телефона). Далее нужно заполнить поле "адрес" в первой структуре, адрес - уже во втором файле. Для этого парсится 1 строка 2го файла, извлекается айдишник (он во всех файлах один и тот же), сравнивается, считывается следующая строка, извлекается айдишник, опять сравнивается и когда ID совпадет - из этой же строки извлекается адрес. Затем из 3го файла из каждой строки извлекается айдишник, сравнивается с тем, который в структуре, и если совпадает - считываем следующее искомое поле (ну, не знаю, любимый сорт сыра). В итоге получается что методом перебора заполнили 1 структуру, вывели полученную строку из всех строк в консоль (ну допустим). Затем эту же структуру заполняем следующими значениями и так далее?

Интересно, насколько долгими будут такие вычисления, если размер каждого файла, скажем, 10 000 строк...
Yandex
Объявления
26.12.2012, 15:26     Алгоритм по типу экселевского vlookup. Посоветуйте, как скомпоновать 2 файлика
Ответ Создать тему
Опции темы

Текущее время: 02:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru