Главная страница
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.028 c
3-100637
ord3f8h
2003-07-07 19:18
2003.07.31
Как работать с DBGrid


1-100685
Anatoly P
2003-07-15 16:23
2003.07.31
MB_ICON...


14-100894
Можно просто Федя
2003-07-13 22:29
2003.07.31
Хочу к администратору


1-100780
Erik
2003-07-16 15:59
2003.07.31
Отсутствует паралельность в com сервере.


14-100940
Dmitriy O.
2003-07-15 11:49
2003.07.31
Как закрыть базы данных