Видел утверждение в c ++ std :: maps, что бы это было? - PullRequest
1 голос
/ 10 октября 2019

Видел выражение / выражение на с ++,

struct bases {
 int a;
 };

class setting {
int n;

};


  std::map<std::string, class setting, bases> s;

s["Please enter your keyword "] =  // .... so on

Что это должно означать в лучшем понятном объяснении?

1 Ответ

2 голосов
/ 10 октября 2019

Проверьте эту документацию std :: map . Карта может быть объявлена ​​следующим образом:

template
<
class Key,
class T,
class Compare = std::less<Key>,
class Allocator = std::allocator<std::pair<const Key, T> >
> 
class map;

Это означает, что карта может содержать не более 4 типов шаблонов: Key, Value, Compare type и тип распределителя;из которых последние 2 являются необязательными.

Теперь ваш код:

std::map<std::string, class setting, bases> s

В этом случае class setting - это значение, а struct bases - это тип сравнения. Говоря простым языком, s - это карта, которая может отображать между std::string типами и class setting, тогда как struct bases предоставляет способ сравнения строковых ключей для сортировки элементов карты.

...