Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
14-100965
Opera
2003-07-15 12:08
2003.07.31
GameExplorer


14-100973
blackman
2003-07-15 16:06
2003.07.31
We wish pleasant programming!


14-100906
comwad
2003-07-14 14:41
2003.07.31
Компонент или описания работы с SNMP


4-101015
VP
2003-05-26 11:29
2003.07.31
ShellExecute ???????????


1-100747
Vorobyev Sergey
2003-07-16 11:31
2003.07.31
Глюк!!! Смещение символов в TMemo