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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как заполнить map? 
:(
    Опции темы
Гость05
Дата 25.10.2005, 11:21 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Всем привет!

требуется функция в которая должна заполнять передаваемый std::map<int, myClass>, что передать сам map или &map, если второе то какой синтаксис заполнения map'а должен быть, как должна будет выглядеть данная конструкция:

Код

mapMy[i] = myClass(ля-ля-ля);


Спасибо.
  Вверх
Dark Elf
Дата 25.10.2005, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Да по-моему так же должна выглядеть - а что именно у тебя не работает?


--------------------
PM MAIL WWW ICQ Skype GTalk Jabber MSN   Вверх
Guest
Дата 25.10.2005, 11:36 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Dark Elf
ответ в контексте вопроса несколько расплывчат

если в функцию передается map то компилиться нормально, но насколько верно передавать сам map, а не ссылку на него?
Код

function func(map mapMy)
{
    ...
    mapMy[i] = myClass(ля-ля-ля);
    ...
}

так ошибка:
Код

function func(map* mapMy)
{
    ...
    mapMy[i] = myClass(ля-ля-ля);
    ...
}

  Вверх
_hunter
Дата 25.10.2005, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



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



--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Гость05
Дата 25.10.2005, 11:52 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











_hunter
поправте если я не прав но разве способ передачи не таков:

Код

function func(map* mapMy)
{
    ...
    mapMy[i] = myClass(ля-ля-ля);
    ...
}

void main(void)
{
    ...
    map<int, myClass> myMap;
    ...
    func(&myMap);
    ...
}


если все таки я передаю ссылку на map то каков синтаксис обращения к его элементам?
  Вверх
Vyacheslav
Дата 25.10.2005, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Код

function func(map<int, myClass>& mapMy)
{
    ...
    mapMy[i] = myClass(ля-ля-ля);
    ...
}

void main(void)
{
    ...
    map<int, myClass> myMap;
    ...
    func(myMap);
    ...
}




или

Код

function func(map<int, myClass>* mapMy)
{
    ...
    mapMy->insert( map<int, MyClass>::value_type( i, myClass(ля-ля-ля) ) );
    ...
}

void main(void)
{
    ...
    map<int, myClass> myMap;
    ...
    func(&myMap);
    ...
}





--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
Plamenk
Дата 25.10.2005, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

(*mapMy)[i]=myClass()

PM MAIL   Вверх
pablo
Дата 25.10.2005, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 12.2.2005
Где: Вильнюс, Литва

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



Мда, на мой всгляд более просо будет с использованием пары: std::make_pair.

Код

mapMy->insert(std::make_pair<int, MyClass>(key, value))


Вот и все чудеса.


--------------------
Первый блин всегда похож на сферу, иногда бывает и куб.
PM MAIL ICQ   Вверх
Chaos A.D.
Дата 25.10.2005, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 172
Регистрация: 16.1.2005
Где: 09 RUS

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



Код

function func(map mapMy)    
{    
    ...    
    mapMy[i] = myClass(ля-ля-ля);    
    ...    
}


Во всех приведенных выше кусках кода у вас ошибка. Это, конечно же, просто недосмотр, или пренебрежение, но если чувак по имени Гость05 не мог скомпилить свой код, то это может помочь. Гость05, вместо map в качестве параметра, юзай map<int, MyClass>&. А лучше указатель. Вот так :

Код

ReturnType func( map<int, MyClass> *MyMap )
{
    /* В этом случае нужно юзать map как показал Plamenk */
};


Это сообщение отредактировал(а) Chaos A.D. - 25.10.2005, 14:04
--------------------
Надо смеяться над тем, что тебя мучит, иначе не сохранишь равновесия, иначе мир сведет тебя с ума...Ken Kesey - One Flew Over The Cocoo's Nest
PM MAIL   Вверх
comcon1
Дата 25.10.2005, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 11.6.2005
Где: Москва ДАС-МГУ

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



Да. Это раз!
map - такого типа нет.
сделай typedef , конкретизируй шаблон и передавай уже КОНКРЕТНЫЙ тип.

А вообще, если не хотите связываться с указателями (а этого не надо делать без необходимости), то передавайте везде ссылку. То есть так
Код

typedef map<int, MyClass> TMyMap;

void func(TMyMap &lnk) {
   lnk.insert( /*ля-ля-ля*/);
}



--------------------
PM MAIL   Вверх
_hunter
Дата 25.10.2005, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



почему это нет? есть он. #include <map> и поехали...
тут просто терминология перепуталась -- указатель и ссылка...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
comcon1
Дата 25.10.2005, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 11.6.2005
Где: Москва ДАС-МГУ

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



Нет, я имел ввиду, что map - это не тип, а шаблон типа.
А шаблоны нельзя указывать в качестве типов, потому что в них типы подставляются при компиляции.


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


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 3.10.2005
Где: Москва

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



Сейчас искать некогда. Вопрос, как через итератор получить доступ ко второму элементу мэпа?


--------------------
Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей.
Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ
PM MAIL   Вверх
pablo
Дата 26.10.2005, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 12.2.2005
Где: Вильнюс, Литва

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



Итератор похож на указатель, так что если обратится "итератор->second", то получиш доступ ко 2 му елементу map-а


--------------------
Первый блин всегда похож на сферу, иногда бывает и куб.
PM MAIL ICQ   Вверх
Neitron
Дата 26.10.2005, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 3.10.2005
Где: Москва

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



second. класс. спасибо.


--------------------
Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей.
Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

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

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

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

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


 




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


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

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