Как получить доступ к 2D вектору с картой? - PullRequest
0 голосов
/ 30 мая 2020
int main()
{
    map<int,string> my_map;
    vector<map<int,string> > v_temp;
    vector< vector<map<int,string> > > vectors;
    for (int i = 0; i < 2; i++)
    {
        for (int j = 0; j < 2; j++)
        {
             my_map.insert(make_pair(1,"sea"));
             my_map.insert(make_pair(2,"ocean"));
            v_temp.push_back(my_map);
        }
        vectors.push_back(v_temp);
        v_temp.clear();
    }

    for(size_t i=0;i<vectors.size();i++)
        for(size_t j=0;j<vectors[i].size();j++)
            std::cout << "vectors[" << i << "][" << j << "][" << vectors[i][j].first<< " "<<vectors[i][j].second<<"]"<< std::endl;
    return 0;
}
                                                                                                   ^

Я столкнулся с проблемой компиляции из-за того, что ни у одного члена нет первого и второго. Как я могу получить к нему доступ. Заранее спасибо.

1 Ответ

2 голосов
/ 30 мая 2020

vectors[i][j] - это map, в котором нет first или second. Вы хотите l oop поверх каждого pair карты и использовать на нем first и second.

for ( size_t i = 0; i < vectors.size(); i++ )
    for ( size_t j = 0; j < vectors[i].size(); j++ )
        for ( const auto &pair : vectors[i][j] )
            std::cout << "vectors[" << i << "][" << j << "][" << pair.first << " " << pair.second << "]" << std::endl;

PS: настоятельно рекомендую не делать using namespace std, причины см. здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...