Текущий архив: 2003.07.31;
Скачать: CL | DM;
Вниз
Проблема с 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;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.013 c