Получить ключ и значения элементов карты в векторе карт от постоянного итератора до вектора карт

0

У меня есть вектор карт, содержащих строки, т.е.

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);
}
  • 0
    itr->find(key) ? Я не уверен, цель итератора в этом вопросе.
  • 0
    Итерировать с помощью итератора?
Показать ещё 1 комментарий
Теги:
stdvector
stdmap
stl

2 ответа

1

Вы можете использовать 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;
    }
}
  • 0
    Я предлагаю сделать строки константными ссылками, чтобы избежать ненужного копирования.
0

Ваше решение плохо, потому что вы делаете несколько копий карт, сначала перед циклом, а затем внутри цикла. Рассмотрим эту более короткую и быструю версию:

for (auto const& el: *itrVectorOfMaps)
    cout << "Key=" << el.first << " => Value=" << el.second << endl;
  • 0
    спасибо буду реализовывать тоже самое :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню