более эффективный алгоритм для сканирования серии файлов CSV и удаления строк, которые не существуют в каждом файле? - PullRequest
0 голосов
/ 04 ноября 2019

Я работаю с около 30 CSV-файлов с метками строк в алфавитном порядке. Цель состоит в том, чтобы объединить данные в один CSV-файл, пропуская данные, которых нет в каждом файле. Мой текущий метод работает, но это занимает почти 4 секунды. Пример моего профессора exe решает ту же проблему за 0,5 секунды. Я решил сначала создать список меток строк из первого файла, затем прочитать каждый последующий файл и использовать string::compare, чтобы определить, следует ли удалить узел из моего текущего списка или пропустить текущую строку. Если строки равны, то данные добавляются в мой выходной файл. Псевдокод:

list_row = row labels from file one
read_row = the current label being read
if list_row[0] precedes read_row
    erase list_row[0]
if list_row[0] equals read_row
    add row data to output and increment list_row
if list_row[0] follows read_row
    skip to the next read_row

Я также пытался использовать maps(row_label, total_occurrences) и удалять вхождения, которые меньше, чем общее количество # входных файлов. Возможно, есть более быстрый способ?

Редактировать: Я понял это. Это был не код. Нас не учили в классе, что у нашего компилятора была другая конфигурация для отладки. Изменив конфигурацию с Debug на Release, программа завершает работу за 0,15 секунды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...