Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2003.07.31;
Скачать: [xml.tar.bz2];

Вниз

Проблема с STL: итераторы вложенных словарей (map-ов)   Найти похожие ветки 

 
VEG   (2003-07-15 23:15) [0]

Имеется такая вот навороченная структура:

struct CFGVAL {
string sComment;
int iValue;
bool bValue;
string sValue;
};
struct CFGGRP {
string sComment;
map<string, CFGVAL> Param;
};
map<string, CFGGRP> Group;

У меня не получается связать итератор с map<string, CFGVAL> Param;:

map<string, CFGGRP>::iterator itGrp = Group.begin();
while( itGrp != Group.end() )
{
map<string, CFGVAL>::iterator itPar = *itGrp->second.Param.begin();
/*[C++ Error] Config.cpp(112): E2034 Cannot convert "pair<const string,CONFIGER::CFGVAL>" to "__rwstd::__rb_tree<string,pair<const string,CONFIGER::CFGVAL>,__rwstd::__select1st<pair<const string,CONFIGER::CFGVAL>,string>,less<string>,allocator<pair<const string,CONFIGER::CFGVAL> > >::iterator"*/
while( itPar != *itGrp->second.Param.end() )
/*[C++ Error] Config.cpp(113): E2094 "operator!=" not implemented in type "__rwstd::__rb_tree<string,pair<const string,CONFIGER::CFGVAL>,__rwstd::__select1st<pair<const string,CONFIGER::CFGVAL>,string>,less<string>,allocator<pair<const string,CONFIGER::CFGVAL> > >::iterator" for arguments of type "pair<const string,CONFIGER::CFGVAL>"*/
{
/*Работа с информацией из словарей*/
++itPar;
}
++itGrp;
}


 
VEG   (2003-07-15 23:37) [1]

Код без комментариев ошибок:
map<string, CFGGRP>::iterator itGrp = Group.begin();
while( itGrp != Group.end() )
{
map<string, CFGVAL>::iterator itPar = *itGrp->second.Param.begin();
while( itPar != *itGrp->second.Param.end() )
{
/*Работа с информацией из словарей*/
++itPar;
}
++itGrp;
}


 
Тих   (2003-07-16 00:15) [2]

на мышках бы хоть потренировался б, что ли :-) А чего код ленишься писАть понятно? ну что это за хакерство такое?
map<string, CFGVAL>::iterator itPar = *itGrp->second.Param.begin();

я просто уверен, что после введения еще одной локальной переменной типа CFGGRP в теле цикла и присвоения ей second итератора все вопросы отпадут сами собой. А так никакого удовольствия нет голову ломать ни себе, ни компилятору ;-)
краткость не панацея, к тому ж есть возможность посмотреть, в какие килобайты кода разворачиваются эти "краткие" конструкции препроцессором.


 
Suntechnic   (2003-07-16 00:19) [3]

"Звёзды" поубирай там где не надо.

map<string, CFGGRP>::iterator itGrp = Group.begin();
while( itGrp != Group.end() )
{
map<string, CFGVAL>::iterator itPar = itGrp->second.Param.begin();
while( itPar != itGrp->second.Param.end() )
{
/*Работа с информацией из словарей*/
++itPar;
}
++itGrp;
}


 
VEG   (2003-07-16 10:12) [4]

Спасибо всем! Вчера ночью разобрался, просто в нет поленился вылазить. Звездочек наставил, т. к. я спутал итераторы с *this. Еще раз спасибо!



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2003.07.31;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.008 c
1-100686
dataMaster
2003-07-18 09:22
2003.07.31
Нет коннекта к Excel


1-100715
aga
2003-07-18 17:05
2003.07.31
TreeView


14-100966
sapsi
2003-07-15 08:20
2003.07.31
Пересечение границы Украины


1-100736
Nucl
2003-07-19 12:38
2003.07.31
monochrome mode


3-100574
stud
2003-07-08 14:28
2003.07.31
про lookup в гриде...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский