C++ 如何将字典添加到向量?

C++ 如何将字典添加到向量?,c++,dictionary,iterator,transform,C++,Dictionary,Iterator,Transform,我试图填充一个mapgroceryDict形式的字典,但是我遇到了一个问题,无法从字典中获取键和值字符串。在mapgroceryDict中,第一个键表示杂货项目的类型,即:水果、蔬菜或肉类。该键值是字典的向量。向量的每个字典项都有一个项名称和数量,即:西红柿:2或草莓:5 我尝试了以下代码: vectorowvect; map rowDict={{'Bananas','2'}{'Apples','5'}; 对于(map::iterator it=rowDict.begin();it!= rowD

我试图填充一个
map
groceryDict形式的字典,但是我遇到了一个问题,无法从字典中获取键和值字符串。在
map
groceryDict中,第一个键表示杂货项目的类型,即:水果、蔬菜或肉类。该键值是字典的向量。向量的每个字典项都有一个项名称和数量,即:西红柿:2或草莓:5

  • 我尝试了以下代码:
  • vectorowvect;
    map rowDict={{'Bananas','2'}{'Apples','5'};
    对于(map::iterator it=rowDict.begin();it!=
    rowDict.end();it++){
    字符串x=it->first;
    字符串y=it->second;
    rowVect.push_back({x,y});
    }
    
  • 我还尝试了以下代码:
  • vectorowvect;
    map rowDict={{'Bananas','2'}{'Apples','5'};
    std::transform(rowDict.begin()、rowDict.end()、back_插入器(rowVect),
    [&](std::pair&p){rowVect.push_back(p);});
    
    我希望代码能够编译,但却收到了以下错误:
    1.错误C2675一元“++”:“\u Iter”未定义此运算符或 转换为预定义运算符可接受的类型
    2.错误C2664::运算符()(std::pair&)const': 无法将参数1从“std::pair”转换为
    'std::pair&'

    我认为您使用的数据类型不正确。使用

    std::map<std::string, std::vector<std::pair<std::string, int>>> groceryDict;
    

    我认为它是在向量中使用pair而不是map。谢谢你的帮助!
        vector<pair<string, string>>rowVect;
        map<string,string> rowDict={{'Bananas','2'}{'Apples','5'}};
        std::transform(rowDict.begin(), rowDict.end(), back_inserter(rowVect), 
        [&](std::pair<string,string> &p) {rowVect.push_back( p ); });
    
    std::map<std::string, std::vector<std::pair<std::string, int>>> groceryDict;
    
    std::map<std::string, std::map<std::string, int>> groceryDict;
    
    std::vector<std::pair<std::string, int>> rowVect;
    
    std::map<std::string, int> rowDict = {{"Bananas", 2}, {"Apples", 5}};
    for ( auto& item: rowDict )
    {
       std::string x = item.first;
       int y = item.second;
       rowVect.push_back({x, y});
    }
    
    for ( auto& item: rowDict )
    {
       rowVect.push_back(item);
    }