Поиск:

Ответ в темуСоздание новой темы Создание опроса
> MFC + VC 2008, проблема c iterator in <map> 
:(
    Опции темы
Dr_VOLAND
Дата 10.3.2008, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Всем привет!
Странная проблема: код вроде правильный, а работать не хочет.=)
Я сейчас пользуюсь VC 2008.
Вот код:
Код

void main()
{
    map<city_name,city_xy> db_main;
    map<city_name,city_xy>::iterator Iter1 = db_main.begin();
    fill_db(&db_main);
    cout<<"In database "<<db_main.size()<<" cityes!"<<endl;

    printf("%s",Iter1->first.name);

    cin.get();
    cin.get();
}


И на printf-e ругается:
user posted image

Вот код программы коммивояжера(очень простой):
Код

#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <map>
#include <cstring>
using namespace std;

class city_name
{
//private:
    public:
    char name[20];
//public:
    city_name()
    {
        strcpy(name,"");
    }
    city_name(char *s)
    {
        strcpy(name,s);
    }
    char *get()
    {
        return name;
    }
};

class city_xy
{
private:
    int x;
    int y;
public:
    city_xy()
    {
        x=y=0;
    }
    city_xy(int *x1, int *y1)
    {
        x=*x1;
        y=*y1;
    }
    int get_x()
    {
        return x;
    }
    int get_y()
    {
        return y;
    }
};

bool operator<(city_name a, city_name b)
{
    return strcmp(a.get(),b.get()) < 0;
}

void fill_db(map<city_name,city_xy> *db)
{
    char name[20];
    int x,y;
    cout<<"Enter please city's info: | then write 'exit'"<<endl;
    cout<<"City name: ";
    cin>>name;
    while(strcmp(name,"exit")!=0)
    {
        cout<<"City x and y: ";
        cin>>x; cin>>y;
        (*db).insert(pair<city_name,city_xy>(city_name(name),city_xy(&x,&y)));
        cout<<"City name: ";
        cin>>name;
    }
}


Буду рад, любой помощи=)
PM MAIL   Вверх
Dr_VOLAND
Дата 10.3.2008, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

    map<city_name,city_xy> db_main;
    map<city_name,city_xy>::iterator Iter1 = db_main.begin();
    fill_db(&db_main);
    cout<<"In database "<<db_main.size()<<" cityes!"<<endl;

    //printf("%s",Iter1->first.name);
                    printf(" %s ",db_main.begin()->first.name);                

    cin.get();
    cin.get();


Код

Enter please city's info: | then write 'exit'
City name: Kiev
City x and y: 23 34
City name: exit
In database 1 cityes!
Kiev


А вот так работает)) тю.
PM MAIL   Вверх
Earnest
Дата 10.3.2008, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

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



Конечно, ты ведь сначала получаешь итератор (у пустого мэпа), а потом его заполняешь.
Нужно наоборот. Итераторы- штука не постоянная.


--------------------
...
PM   Вверх
Dr_VOLAND
Дата 11.3.2008, 01:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Точно.... проглядел!
Спасибо!  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




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


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

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