У меня есть вектор карт, содержащих строки, т.е.
vector< map <string,string> > vectorOfMaps;
vector< map <string,string> >::const_iterator itr =vectorOfMaps.begin();
vectorOfMaps заполняется другой функцией, и функция вызывающего абонента может получить доступ только к const_iterator itr.
Как получить доступ к ключу и его значению каждого элемента карты в vectorOfMaps?
Любая помощь оценили :)
EDIT: Получил мое решение.
map<string,string> myMap = (*itrVectorOfMaps);
while(loop till the end element)
{
for(map<string,string>::iterator itM = myMap.begin();
itM != myMap.end(); itM++)
{
cout<<"Key="<<itM->first<<" => Value="<<itM->second<<endl;
}
itrVectorOfMaps++;
myMap=(*itrVectorOfMaps);
}
Вы можете использовать first
и second
ключевые слова для доступа к элементам map
поскольку вы выполняете итерацию по vector
map
s.
for(auto const& currentMap : vectorOfMaps) // Loop over all the maps
{
for(auto const& element : currentMap) // Loop over elements of current map
{
std::string const& key = element.first;
std::string const& value = element.second;
}
}
Ваше решение плохо, потому что вы делаете несколько копий карт, сначала перед циклом, а затем внутри цикла. Рассмотрим эту более короткую и быструю версию:
for (auto const& el: *itrVectorOfMaps)
cout << "Key=" << el.first << " => Value=" << el.second << endl;
itr->find(key)
? Я не уверен, цель итератора в этом вопросе.