Я пытаюсь заполнить словарь в форме map<string, vector<map<string,string>> >
groceryDict, но у меня возникла проблема, из-за которой я не могу получить строки ключей и значений из словаря. В map<string, vector<map<string,string>> >
groceryDict первый ключ представляет тип продукта, т. Е. Фрукты, овощи или мясо. Это значение ключа является вектором словарей. У каждого словарного элемента вектора есть название и количество элементов, т.е.: помидоры: 2 или клубника: 5.
- Я пробовал следующий код:
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});
}
Я также попробовал следующий код:
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 ::пара 'to' std :: pair & '