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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Пользовательские функции. Ошибка http://www.cyberforum.ru/cpp-beginners/thread1218726.html
Помогите определить ошибку в формуле #include "stdafx.h" #include <cmath> // для функции sqrt (), exp(), sin (). #include <iostream> //заголовочный файл библиотеки ввода/вывода. #include <iomanip> int _tmain() {
C++ Вывести таблицу значений функции y=|x| Написать программу, которая выводит таблицу значений функции y=|x|. Диапазон изменения аргумента от -4 до 4, шаг приращения аргумента 0.5 я хз в программировании не шарю #include <iostream.h> #include <conio.h> #include <math.h> using namespace std; int main(){ http://www.cyberforum.ru/cpp-beginners/thread1218719.html
C++ Вывести таблицу значений функции
Вывести таблицу значений функции
Вычислить значения z в соответствии со значениями xi C++
Вычислить значения z в соответствии со значениями xi
C++ Получить квадратную матрицу по формулам http://www.cyberforum.ru/cpp-beginners/thread1218700.html
Получить квадратную матрицу по формулам
C++ Арифметические действия в массиве Арифметические действия в массиве Задачи положено переписывать! подробнее

Показать сообщение отдельно
ganiev1
0 / 0 / 0
Регистрация: 02.12.2010
Сообщений: 8
28.06.2014, 03:03     Работа с частотным словарем
Доброго времени суток.
Необходимо из большого файла ~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
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 17:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru