Главная страница
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.018 c
3-100580
Silla
2003-07-07 15:09
2003.07.31
DBLookupComboBox


14-100974
Merrydock
2003-07-15 22:06
2003.07.31
Проблема с Dephi 6


3-100562
Kati
2003-07-08 12:03
2003.07.31
Индексация таблиц.


14-100874
TiRAN
2003-07-12 15:04
2003.07.31
Резервное копирование данных


3-100579
Bless
2003-07-08 09:51
2003.07.31
Что дает SET NOCOUNT ON?