Эффективный способ сопоставления уникальных и повторяющихся значений.Где ключ или значение может быть доступ - PullRequest
0 голосов
/ 26 сентября 2018

Нет строки, которая должна отображаться с другой строкой.

Ex :     Bacardi_old - > Facundo 
         Smirnoff_old -> Pyotr 
         Seagram_old  -> Joseph
         This keep on ..... may be around 1000

Есть строка, которая должна отображаться с повторяющейся строкой.

Ex :     Bacardi_new  -> Facundo 
         Smirnoff_new -> Facundo 
         Seagram_new  -> Facundo 

Требование: какНиже кейс

кейс 1: при вводе названия бренда.Имя владельца в качестве вывода.

input : Bacard_old
output: Facundo

case 2: Когда имя владельца вводит название бренда в качестве вывода.

input : Facundo
output : Bacardi_old, Bacardi_new ,Smirnoff_new ,Seagram_new 

Мой подход:

1.У меня есть картакак показано ниже:

std::map<std::string,std::vector<std::string>> Mymap;

2. Должен ли я создать две карты, одно уникальное отображение и другое для дублирования

std::map<std::string,std::string>Mymap
std::map<std::string,std::vector<std::string>>Mymap

Является ли второй вариант более хорошим, чем первый, с точки зрения всех аспектов.Пожалуйста, предложите лучший подход.

Примечание: я придерживаюсь c ++ 11.Нет библиотеки повышения.

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018

Лучше всего относительно:)

Вы можете использовать std :: multimap для того же самого.

std::multimap<std::string,std::string> my_map;
my_map.insert(std::make_pair("owner_name", "brand_name"));

Теперь вы можете искать на основе key или value в зависимости от того, что вам нужно.

0 голосов
/ 26 сентября 2018

Лучший подход зависит от ваших потребностей.Вы заинтересованы в скорости доступа или скорости вставки?Или вы заинтересованы в сокращении используемой памяти?

Первое предлагаемое вами решение (карта с ключом = бренд и значение = владелец) использует меньше памяти, но требует полного сканирования для выполнения поиска по владельцу.

Второе решение:

  • карта с ключом = бренд и стоимость = владелец
  • карта с ключом = бренд и значение = список владельцев

быстрее для поиска по владельцу и поиска по бренду.Однако это требует больше памяти, и вам также нужно выполнить 2 вставки для каждой новой пары.

...