Професионална програма
Loading...
+ Нов въпрос
BobyTopalova avatar BobyTopalova 26 Точки

Задача от домашното за асоциативни контейнери

Искам да попитам, някой дали може да има

map<string,pair<string,int> и как се въвежда, с insert не се получава? Искам да го използвам за 4 - та задача. Трябва да въведа  1) марка коли; 2) модел кола; 3) год. на производство.

Мислех си за вектор, вместо мап, но в условието има търсене по ключ, който в случая е марката или отпечатване на всички въведени автомобили. Това е задача 4, от настоящото домашно.

Тагове:
0
C++ Programming 21/12/2018 18:03:27
kolioi avatar kolioi 621 Точки
Best Answer

Може. Дори има няколко начина.

string make{ "Audi" }, model{ "a3" };
int year{ 2007 };
map<string, pair<string, int>> cars;
// 1.
cars.insert({ make, make_pair(model, year) });
// 2.
cars[make] = make_pair(model, year);
// 3.
cars.emplace(make, make_pair(model, year));

Всъщност, задачата най-лесно се решава като се използва структура и вектор

typedef struct
{
    string make;
    string model;
    int year;
} Car;

vector<Car> cars;

 

0
kolioi avatar kolioi 621 Точки

Ако използваш масив или вектор, трябва да ги сортираш. Трябва ти и една функция за сравняване.

bool comp(Car a, Car b)
{
	return a.make < b.make;
}
......
vector<Car> cars;
sort(cars.begin(), cars.end(), comp);

Car cars[n];
sort(cars, cars + n, comp);


Ако използваш map, елементите на мап-а автоматично се сортират по ключ (Key), който в този случай е модела на колата.

0
BobyTopalova avatar BobyTopalova 26 Точки

Благодаря, ще опитам, но май още трябва да уча, не сме учили структури!

0
BobyTopalova avatar BobyTopalova 26 Точки

Успях, да я реша и с мап. Много Благодаря!

0