С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ganiev1
0 / 0 / 0
Регистрация: 02.12.2010
Сообщений: 8
#1

Работа с частотным словарем - C++

28.06.2014, 03:03. Просмотров 229. Ответов 2
Метки нет (Все метки)

Доброго времени суток.
Необходимо из большого файла ~100Мб загрузить в map пару (ключ, значение), где ключ это string слово, а значение int - какое-то число (частота его повторений в разных текстах).
Вот пример из текстового файла
Код
adsd 10
cfff 30
ddd 40
ddx 50
ddc 30
feee 10
gffff 50
vsd 10
Поскольку файл довольно большой, то я загружаю его полностью в в один большой string и из этого string'a делаю строковой поток, чтобы можно было читать его, как будто это файл.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
typedef map <string, int> map_sl;
 
int main()
{
    map_sl w_dict;
    string key;
    int value;
 
    ifstream in("hello.dic");
    istreambuf_iterator<char> it(in);
    string contents(it,std::istreambuf_iterator<char>());
    istringstream mstr(contents);
    while (!mstr.eof())
    {
        mstr >> key >> value;
        w_dict.insert(make_pair(key,value));
    }
Считывание из файла в строку занимает 1,5 секунды , а вот из строки в map считывание занимает бесконечное количество времени.
Можно ли ускорить это дело или лучше использовать нечто совсем другое?
Используемая среда VS 2012
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.06.2014, 03:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа с частотным словарем (C++):

Подсчитать буквы в тексте и распределить их по частотным диапазонам (частотный анализ текста) - C++
Задание: Провести частотный анализ текста на украинском языке. Программа должна подсчитать буквы в тексте и распределить их по частотным...

Замена символов файла в соответствии со словарем - C++
Есть некий файл с именем 1(тхт) и есть некий словарь с именем 2(тхт).В словаре есть набор символов А-1 а-2 Б-3 б-4 и тд. Мне нужно...

Организация работы со словарем: загрузка/выгрузка, поиск слов с заданным корнем - C++
STL Нужно использовать шаблон list (двусвязного списка) для организации работы со словарем basic_string (загрузка/выгрузка, поиск...

Работа со словарем - Python
Всем привет! Есть словарь с таким вот содержанием: {&quot;2015-01-24 00:00:00&quot;: 1, &quot;2015-01-24 00:00:02&quot;: 2,&quot;2015-01-24 00:00:01&quot;: 2} Мне...

Работа со словарем - Python
Всем привет! Продолжаю изучать Python, и возникла загвоздка, решение которой я не могу найти... Вообщем, имеется следующий код: ...

MasterSCADA. Работа с частотным преобразователем MMX34AA4D3F0-0 (Eaton) - SCADA
мне нужно подключит ЧП EATON к MasterScada его тип: MMX34AA4D3F0-0. подскажите пожалуйста по порядку что для этого нужно. на руках только...

2
alsav22
5428 / 4823 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.06.2014, 04:28 #2
Цитата Сообщение от ganiev1 Посмотреть сообщение
Поскольку файл довольно большой, то я загружаю его полностью в в один большой string и из этого string'a делаю строковой поток, чтобы можно было читать его, как будто это файл.
Смысл? Можно просто из файла читать:
C++
1
2
3
 
while (in >> key >> value)
    w_dict.insert(make_pair(key, value));
0
SlavaSSU
216 / 161 / 45
Регистрация: 17.07.2012
Сообщений: 587
28.06.2014, 09:31 #3
ganiev1, захешировать строки и делать map<long long, int> M?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.06.2014, 09:31
Привет! Вот еще темы с ответами:

Работа со словарем Python - Python
Всем добрый день, есть данная задача. Имеется Словарь (код ниже): ipNagios = { &quot;IgorVD&quot;:, &quot;DenisRodakovo&quot;: } Это пример...

Работа со словарем - реально ли - Haskell
Здравствуйте ребят :) Очень нужна ваша помощь! Подскажите, намекните, дайте совет - как работать со словарем в хаскель. Это реально...

Работа со словарем ispell - C++ Builder
Здравствуйте, помогите разобраться. Для приведения введенного слова к исходной форме используется словарь ispell. Не могу разобраться как...

Работа со словарем, получение ключей - Python
Получилось получить ключи так: scale_n = {36:'-24', 35:'-23',34:'-22',33:'-21',32:'-20',31:'-19', ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.