c++ - Обращение к элементам map, если map содержится в vector


2

Есть такой код:

vector < map<int, int> > f;
map<int, int> f1 = { {0,0}, {5,8},{10,12},{15,16},{20,22}};
map<int, int> f2 = { { 0,0 },{ 5,6 },{ 10,12 },{ 15,16 },{ 20,25 } };
map<int, int> f3 = { { 0,0 },{ 5,10 },{ 10,14 },{ 15,18 },{ 20,25 } };
map<int, int> f4 = { { 0,0 },{ 5,7 },{ 10,10 },{ 15,20 },{ 20,23 } };
f.push_back(f1);
f.push_back(f2);
f.push_back(f3);
f.push_back(f4);

Как обращаться к элементам map в vector? А и именно - к ключу и значению в map?

Источник
  •  124
  •  1
  • 1 янв 2018 2018-01-01 10:37:24

1 ответ

5

Сначала обращаемся к элементу вектора

f[1]

получив map, ну, а потом - к его элементу:

f[1][10] == 14

Примерно так. Можно использовать член .at().

О перечислении всех элементов в отображении в векторе - например,

for(const auto& p : f[1]) 
    cout << p.first << "  " << p.second << endl;

Или во всех векторах

for(const auto& v: f)
    for(const auto& [key,value]: v)
        cout << key << " - " << value << endl;
  • 1 янв 2018 2018-01-01 09:40:41
См. дополненный ответ. — 1 янв 20182018-01-01 08:17:19.000000
да, как перечислить все элементы? — 1 янв 20182018-01-01 08:17:19.000000
Обращение к элементам map происходит по ключу. Т.е. для обращения к конкретному элементу вам нужно знать ключ - и это я описал. Что именно вам интересует? Как перечислить все элементы? или что? Сформулируйте вопрос точнее... — 1 янв 20182018-01-01 08:17:19.000000
а как обратиться к ключу и значению в мап? я не до конца сформулировал свой вопрос до этого — 1 янв 20182018-01-01 08:17:19.000000