Loading...
AliYK avatar AliYK 5 Точки

03. Cities by Continent and Country

Съвсем се оплетах с тази задача, някой може ли да ми помогне как да създам map от string и map от string и вектор от стринг и да напълня информацията в тях?

Благодаря!

https://pastebin.com/8AyW7D64

#include <iostream>
#include <map>
#include <vector>

using namespace std;

int main()
{
    int n;
    cin >> n; cin.ignore();

    map < string, map<string, vector<string> > > continentsData;
    vector<string>continents;
    vector<string> countries;

    for (int i = 0; i < n; i++) {
        string continent, country, city;
        cin >> continent >> country >> city;

        if (continentsData.find(continent) == continentsData.end()) {
            
            continents.push_back(continent);
            continentsData[continent] = {
               map<string, vector<string> >{country, city},
            };
        }
        else {
            if (continentsData[continent].find(country) == continentsData[continent].end()) {

                countries.push_back(country);
                vector<string> cities;
                cities.push_back(city);
                continentsData[continent][country] = cities;
            }
        }

      
    }
    
    return 0;
}
 

Тагове:
0
C++ Advanced
MartinBG avatar MartinBG 4803 Точки

Запълването на подобна структура в C++ е много лесно и удобно:

  unordered_map<string, unordered_map<string, vector<string> > > continentsData;

  for (int i = 0; i < n; i++) {
    string continent, country, city;
    cin >> continent >> country >> city;

    continentsData[continent][country].push_back(city);
  }

Проблемът е, че съдейки по дадените примери към задачата, се очаква резултатът да бъде изведен според последователността на входните данни. В стандартната библиотека на C++ няма асоциативен контейнер, който да предлага такава функционалност (като LinkedHashMap в Java, например) и съответно ще трябва да пазим последователността на континентите и на страните в отделни вектори, както изглежда вече сте се досетили.

1
29/05/2022 02:56:41
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.