Карта инициализации карты

Я пытаюсь инициализировать карту карты, но я не уверен, какую ошибку я делаю. Ниже приведен пример кода.

static  std::map<std::string, std::map<std::string,std::string>>  _ScalingMapVolume ={
    {"AA",{"busy_timeout","test"}},
    {"BB",{"cache_size","10000"}}
};

Я получаю ошибку;

ошибка: нет совпадения для вызова '(std:: _ Select1st, std:: basic_string>>) (const char &)'

2 ответа

Решение

{"busy_timeout","test"} это не ценность карты, а пара. Тебе нужно {{"busy_timeout","test"}},

Ваш код должен выглядеть так:

static  std::map<std::string, std::map<std::string, std::string>>  _ScalingMapVolume = {
   {"AA", {{"busy_timeout", "test"}}},
   {"BB", {{"cache_size", "10000"}}}
};
init = {{"AA", {"busy_timeout", "test"}}, ...}

Вам не хватает одного набора скобок, так как value_type карты std::pair<const std::string, std::map<std::string, std::string>>, value_type из mapped_type являетсяstd::pair<const std::string, std::string>, Таким образом, вы должны использовать это таким образом.

Другие вопросы по тегам