С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 02.12.2010
Сообщений: 8
1

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

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

Author24 — интернет-сервис помощи студентам
Доброго времени суток.
Необходимо из большого файла ~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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.06.2014, 03:03
Ответы с готовыми решениями:

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

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

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

Работа со словарем
Дан текст: в первой строке задано число строк, далее идут сами строки. Выведите слово, которое в...

2
5499 / 4894 / 831
Регистрация: 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
221 / 166 / 47
Регистрация: 17.07.2012
Сообщений: 587
28.06.2014, 09:31 3
ganiev1, захешировать строки и делать map<long long, int> M?
0
28.06.2014, 09:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.06.2014, 09:31
Помогаю со студенческими работами здесь

Работа со словарём
Здравствуйте. Есть файл на рабочем столе, в котором две строки. Первая = почта:пароль. Вторая =...

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

Работа с словарем в jquery
Столкнулся с проблемой, сравнения значений на соответствие в словаре, введенных в поле, покажите...

Работа со словарем-анкетой
В анкетных данных обозначены фамилия, пол, рост. Определите средний рост женщин, фамилию самого...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru