Как напечатать вектор <map <string, int>> в C ++ - PullRequest
0 голосов
/ 08 мая 2018

В vector < map< string, int > > тип.

Когда я знаю индекс вектора, я просто хочу распечатать строку карты, но она не работает.

Ошибка возникает в

cout<< myVec.at(intTmp)->first<<"\n";

Я не уверен, как получить доступ к карте внутри вектора.

 #include <iostream>
 #include <string>
 #include <map>
 #include <vector>
using namespace std;

int N, M;
vector<map<string, int> > myVec;

bool isDigits(string& s){

  for(int i=0; i<s.size(); ++i){
      if(!isdigit(s[i])) return false;
  }
    return true;
}


int main()
{
    cin >> N >> M;

    for(int i=1; i<=N; ++i){
        string tmp;
        cin.clear();
        getline(cin, tmp);
        myVec.emplace_back(tmp, i);
    }

    for(int i=1; i<=M; ++i){
        string tmp1;
        cin.clear();
        getline(cin, tmp1);
        if(isDigits(tmp1)){
            int intTmp = atoi(tmp1.c_str());
            cout<< myVec.at(intTmp)->first<<"\n";
        }
    }

    return 0;
}

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

Это карта, которую вы должны перебирать по карте

vector< map<string,int> > myVec;
for( int i=0; i< myVec.size(); i++) {
    for(auto it = myVec[i].begin(); it != myVec[i].end(); it++) {
        cout<<it->first;
    }
}
0 голосов
/ 08 мая 2018

Использовать этот фрагмент:

for(auto map2:myVec)
{   
   for(auto it = map2.begin();it != map2.end();it++)
    cout << (it->first).c_str() << " " << it->second <<endl;
}
...