使用 C++ 在地图中插入 Pair 作为键

2 c++ dictionary std-pair

我想知道如何使用 C++ 在地图中插入对,这是我的代码:

map< pair<int, string>, int> timeline;
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下方法插入它:

timeline.insert(pair<pair<int, string> , int>(make_pair(12, "str"), 33);
//and
timeline.insert(make_pair(12, "str"), 33);
Run Code Online (Sandbox Code Playgroud)

但我有错误

\main.cpp|66|error: no matching function for call to 'std::map<std::pair<int, std::basic_string<char> >, int&>::insert(std::pair<int, const char*>, int)'|

son*_*yao 6

std::map::insert期望std::map::value_type作为它的参数,即std::pair<const std::pair<int, string>, int>。例如

timeline.insert(make_pair(make_pair(12, "str"), 33));
Run Code Online (Sandbox Code Playgroud)

或者更简单

timeline.insert({{12, "str"}, 33});
Run Code Online (Sandbox Code Playgroud)

如果你想就地构造元素,你也可以使用std::map::emplace,例如

timeline.emplace(make_pair(12, "str"), 33);
Run Code Online (Sandbox Code Playgroud)

居住


R S*_*ahu 5

如有疑问,请简化。

auto key = std::make_pair(12, "str");
auto value = 33;

timeline.insert(std::make_pair(key, value));
Run Code Online (Sandbox Code Playgroud)