Search code examples
c++vectorsyntaxmultimapstd-pair

Syntax to insert elements into multimap<string, vector<pair<string, int>>>


My question is how to insert some element into multimap of the form

multimap<string, vector<pair<string, int>>> someMap; //std skipped to simplify

I tried different syntaxes and i think the closest one may be this one

someMap.insert(pair<string,vector<pair<string, int>>>(someString1, vector<pair<string, int>> { pair<string, int> (someString2, someInt) }));

Unfortunately it is not working. Any tips??


Solution

  • The type of the first pair is wrong

    pair<string,vector<string, int>>
                       ^^^^^^^^^^^
    

    anyway I suggest:

    multimap<string, vector<pair<string, int>>> someMap;
    vector<pair<string,int>> obj;
    someMap.insert(make_pair("hello", obj));
    

    or if you insist with that syntax (verbose-mode):

      multimap<string, vector<pair<string, int>>> someMap;
      string someString2 = "hello";
      string someString1 = "world";
      int someInt = 42;
      someMap.insert(pair<string,vector<pair<string, int>>>(someString1, vector<pair<string, int>> { pair<string, int> (someString2, someInt) }));
    

    this requires C++11.