Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: stl, multimap  (Прочитано 5607 раз)
0 Пользователей и 1 Гость смотрят эту тему.
rukia
Интересующийся

ru
Offline Offline

« : 10-10-2010 21:49 » new

Здравствуйте)

Код:
multimap<int,multimap<string,int> >knot;
//заполняем ее...
//хотим посмотреть:

void Base::show_map()
{
typedef multimap <int, multimap<string,int> > Map;

Map::iterator it,st;
for(it=knot.begin();it!=knot.end();it=st)
{
int key=(*it).first;
cout<<key<<"-"<<endl;
pair<Map::const_iterator,Map::const_iterator> mpair=knot.equal_range(key);
for(st=mpair.first;st!=mpair.second;++st)
                                {тратата}
}


}
Ругается на for(st=mpair.first;st!=mpair.second;++st){}
Почему? Ведь такое работает:

Код:
typedef multimap<string, int> Map; 
typedef Map::iterator mapIter;  
Map mymap;    
//заполняем ее..
//хотим посмотреть:
mapIter it, st;    
for (it = mymap.begin();  it != mymap.end();  it = st)    
{
         string Key = (*it).first;
        
         cout << Key << "-" << endl;
         pair<mapIter, mapIter> mpair = mymap.equal_range(Key);
      
         for (st = mpair.first;  st != mpair.second;  ++st)
         { tratata}    
}    
« Последнее редактирование: 12-10-2010 10:52 от Sel » Записан
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #1 : 11-10-2010 03:34 » 

rukia, у тебя range содержит константные итераторы, ты пытаешься его границы использовать, как НЕ константные итераторы
поменяй тип переменной st на Map::const_iterator, если ты не будешь менять значения или же поменяй  pair<Map::const_iterator,Map::const_iterator> на pair<Map::iterator,Map::iterator>

На будущее: приводи пожалуйста сообщение об ошибке, это резко упрощает задачу.
Записан

Странно всё это....
rukia
Интересующийся

ru
Offline Offline

« Ответ #2 : 11-10-2010 14:25 » 

Цитата
поменяй  pair<Map::const_iterator,Map::const_iterator> на pair<Map::iterator,Map::iterator>
помогло.
жаль стек протоколов не передает пока сахар в кубиках..
спасибо за ответы:)
Записан
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #3 : 11-10-2010 18:16 » 

заходи еще Улыбаюсь
Записан

Странно всё это....
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines