0
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;
}
                                                                                                   ^

I am facing compilation issue stating no member having first and second. How can I access it. Thanks in advance.

Ocean11
  • 35
  • 3

1 Answers1

2

vectors[i][j] is a map, which does not have a first or second. You want to loop over each pair of the map, and use first and second on it.

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: highly recommend not doing using namespace std, see here for reasons

ChrisMM
  • 8,448
  • 13
  • 29
  • 48