Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка при компиляции, Использование библиотеки контейнеров map 
:(
    Опции темы
xrustic
Дата 18.12.2010, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 14.1.2010

Репутация: нет
Всего: нет



Приветствую всех!
Помогите разобраться новичку в программировании в Visual C.


Вот программа:
Код

#include "stdafx.h"

#include <iostream>
#include <string>
#include <map>
#include <fstream>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    map  words;
    ifstream in;
    in.open("in.txt");
    string word;
    while (in>>word)
    words[word]++;
    ofstream out;
    out.open("out.txt");
    for (map ::iterator  it=words.begin();it!=words.end();it++)
    out<<(*it).first<<";"<<endl;
    cout<<"Done"<<endl;
}



Выскакивают следующие ошибки:

1>d:\documents and settings\рустам\мои документы\visual studio 2008\projects\sl\sl\sl.cpp(15) : error C2955: 'std::map' : use of class template requires template argument list
1>        d:\program files\microsoft visual studio 9.0\vc\include\map(77) : see declaration of 'std::map'
1>d:\documents and settings\рустам\мои документы\visual studio 2008\projects\sl\sl\sl.cpp(15) : error C2133: 'words' : unknown size
1>d:\documents and settings\рустам\мои документы\visual studio 2008\projects\sl\sl\sl.cpp(15) : error C2512: 'std::map' : no appropriate default constructor available
1>d:\documents and settings\рустам\мои документы\visual studio 2008\projects\sl\sl\sl.cpp(20) : error C2678: binary '[' : no operator found which takes a left-hand operand of type 'std::map' (or there is no acceptable conversion)
1>        d:\program files\microsoft visual studio 9.0\vc\include\map(167): could be '_Ty &std::map<_Kty,_Ty,_Pr,_Alloc>::operator [](const _Kty &)'
1>        while trying to match the argument list '(std::map, std::string)'
1>d:\documents and settings\рустам\мои документы\visual studio 2008\projects\sl\sl\sl.cpp(23) : error C2955: 'std::map' : use of class template requires template argument list
1>        d:\program files\microsoft visual studio 9.0\vc\include\map(77) : see declaration of 'std::map'
1>d:\documents and settings\рустам\мои документы\visual studio 2008\projects\sl\sl\sl.cpp(23) : error C2663: 'std::_Tree<_Traits>::begin' : 2 overloads have no legal conversion for 'this' pointer
1>d:\documents and settings\рустам\мои документы\visual studio 2008\projects\sl\sl\sl.cpp(23) : error C2512: 'std::_Tree<_Traits>::iterator' : no appropriate default constructor available
1>d:\documents and settings\рустам\мои документы\visual studio 2008\projects\sl\sl\sl.cpp(23) : error C2663: 'std::_Tree<_Traits>::end' : 2 overloads have no legal conversion for 'this' pointer
1>d:\documents and settings\рустам\мои документы\visual studio 2008\projects\sl\sl\sl.cpp(23) : fatal error C1903: unable to recover from previous error(s); stopping compilation


По сути программа переводчик. Нужно из текстового файла перевести, используя библиотеку контейнеров.
PM MAIL   Вверх
Crafty
Дата 18.12.2010, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 319
Регистрация: 3.11.2008

Репутация: 2
Всего: 14



Цитата(xrustic @  18.12.2010,  17:27 Найти цитируемый пост)
d:\documents and settings\рустам\мои документы\visual studio 2008\projects\sl\sl\sl.cpp(15) : error C2955: 'std::map' : use of class template requires template argument list

Используй аргументы для шаблона. 
если переводчик, то объяви map вот так 
Код

map<string,string>  words;


Добавлено через 2 минуты и 37 секунд
Цитата(xrustic @  18.12.2010,  17:27 Найти цитируемый пост)
 words[word]++;

Только твоя программа больше похожа на посчет кол-ва встречающихся слов.

Добавлено через 4 минуты и 10 секунд
Если кол-ва слов считать, то map вот так будет выглядить
Код

map<string,int>  words;


Добавлено через 6 минут и 22 секунды
Используй отступы в коде, а то не удобно читать код.
PM MAIL   Вверх
xrustic
Дата 18.12.2010, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 14.1.2010

Репутация: нет
Всего: нет



Спасибо. Ошибок стало меньше

теперь такая картина:

1>d:\documents and settings\рустам\мои документы\visual studio 2008\projects\sl\sl\sl.cpp(24) : error C2955: 'std::map' : use of class template requires template argument list
1>        d:\program files\microsoft visual studio 9.0\vc\include\map(77) : see declaration of 'std::map'
1>d:\documents and settings\рустам\мои документы\visual studio 2008\projects\sl\sl\sl.cpp(24) : error C2955: 'std::map' : use of class template requires template argument list
1>        d:\program files\microsoft visual studio 9.0\vc\include\map(77) : see declaration of 'std::map'
1>d:\documents and settings\рустам\мои документы\visual studio 2008\projects\sl\sl\sl.cpp(24) : error C2440: 'initializing' : cannot convert from 'std::_Tree<_Traits>::iterator' to 'std::_Tree<_Traits>::iterator'
1>        with
1>        [
1>            _Traits=std::_Tmap_traits<std::string,int,std::less<std::string>,std::allocator<std::pair<const std::string,int>>,false>
1>        ]
1>        No constructor could take the source type, or constructor overload resolution was ambiguous
1>d:\documents and settings\рустам\мои документы\visual studio 2008\projects\sl\sl\sl.cpp(24) : fatal error C1903: unable to recover from previous error(s); stopping compilation
PM MAIL   Вверх
boostcoder
Дата 18.12.2010, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



тут:
Цитата(xrustic @  18.12.2010,  17:27 Найти цитируемый пост)
map ::iterator  it


PM WWW   Вверх
xrustic
Дата 18.12.2010, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 14.1.2010

Репутация: нет
Всего: нет



Что то я совсем разобаться не могу. 
Можт кто подскажет не обращая не приведенную программу как можно реализовать такое переводчик?

Задача в следующем:
Есть два текстовых файла. В первом текст во втором словарь.
Перевести текст из первого используя словарь.
Использовать библиотеку контейнеров.
PM MAIL   Вверх
Crafty
Дата 18.12.2010, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 319
Регистрация: 3.11.2008

Репутация: 2
Всего: 14



Заполняешь свой map<string,string> dictionary парами слов из словаря, потом считываешь по одному слову  в переменную word из первого файла, и используешь его как ключ для вывода перевода std::cout << dictionary[word].
PM MAIL   Вверх
xrustic
Дата 18.12.2010, 20:17 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 14.1.2010

Репутация: нет
Всего: нет



Да. Спасибо.
А как это в коде написать?
PM MAIL   Вверх
boostcoder
Дата 18.12.2010, 20:18 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



xrustic, вы вообще обнаглели, я посмотрю. попытайтесь хоть что-то сами сделать. что не получается - спрашивайте.
PM WWW   Вверх
xrustic
Дата 18.12.2010, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 14.1.2010

Репутация: нет
Всего: нет



последний вариант

Код


#include "stdafx.h"

#include <iostream>
#include <string>
#include <map>
#include <fstream>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
map<string,int> words;
ifstream in;
in.open("in.txt");
string word;
while (in>>word)
words[word]++;
ofstream out;
out.open("out.txt");
map<string,int>::iterator it;
for (it=words.begin();it!=words.end();it++)
cout<<(*it).first<<";"<<endl;
cout<<"Done"<<endl;


    system("pause");

    return 0;
}




Вопрос в том. Все ли делается то что нужно?
PM MAIL   Вверх
xrustic
Дата 18.12.2010, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 14.1.2010

Репутация: нет
Всего: нет



 

   smile 

   Вот что мне нужно было в итоге, друзья !!!


Код

#include "stdafx.h"

#include <iostream>
#include <string>
#include <map>
#include <fstream>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    /* Объявляем ассоциативный массив */
    map<string,string> dictionary;

    /* Открываем файл словарь */
    std::ifstream file("dictionary.txt");

    if(file)
    {
        // пока не конец
        while(!file.eof())
        {
            // читаем строку
            std::string line;
            file >>line;
 
            // ищем разделитель
            std::string::size_type off = line.find('=');
            if(off != std::string::npos)
            {
                // пишем в вектор пару имя/значение
               dictionary[line.substr(0, off)]=line.substr(off + 1);
            }
        }
    }


    ifstream text;
    text.open("text.txt");

    string word;

    while (text>>word)
        std::cout << dictionary[word] << " ";

    cout << endl;

    cout<<"Done"<<endl;

    system("pause");

    return 0;
}


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1076 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.