如何将字典添加到向量?

BDD

我正在尝试填充形式为map<string, vector<map<string,string>> >BistroDict的字典,但遇到了无法从字典中获取键和值字符串的问题。map<string, vector<map<string,string>> >杂货区中,第一个键表示杂货项目的类型,即:水果,蔬菜或肉。该键值是字典的向量。向量的每个词典项目都有一个项目名称和数量,即:Tomatoes:2或Strawberries:5。

  1. 我尝试了以下代码:
    vector<map<string, string>>rowVect;
    map<string,string> rowDict={{'Bananas','2'}{'Apples','5'}};
    for (map<string, string>::iterator it = rowDict.begin(); it != 
    rowDict.end();it++) {
     string x = it->first;
     string y = it->second;
     rowVect.push_back({x,y});
     }
  1. 我也尝试了以下代码:
    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 ); });

我希望代码可以编译,但是我收到以下错误:
1.错误C2675一元'++':'_Iter'没有定义此运算符或未转换为预定义运算符可接受的类型
2.错误C2664 :: operator ()(std :: pair&)const':无法将参数1从'std :: pair'转换为'std :: pair&'

萨胡

我认为您使用的是错误的数据类型。用于

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循环版本

for ( auto& item: rowDict )
{
   rowVect.push_back(item);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章