使用 C++ 在地图中插入 Pair 作为键
Insert Pair as a key in map using c++
我想知道如何使用 C++ 在地图中插入对,这是我的代码:
map< pair<int, string>, int> timeline;
我尝试使用以下方式插入它:
timeline.insert(pair<pair<int, string> , int>(make_pair(12, "str"), 33);
//and
timeline.insert(make_pair(12, "str"), 33);
但我收到错误
\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)'|
std::map::insert
期望 std::map::value_type
作为其参数,即 std::pair<const std::pair<int, string>, int>
。例如
timeline.insert(make_pair(make_pair(12, "str"), 33));
或更简单为
timeline.insert({{12, "str"}, 33});
如果你想就地构造元素,你也可以使用std::map::emplace
,例如
timeline.emplace(make_pair(12, "str"), 33);
如有疑问,请简化。
auto key = std::make_pair(12, "str");
auto value = 33;
timeline.insert(std::make_pair(key, value));
简单使用传统方式:
timeline[key] = value;
用于插入和检索对:
timeline[{1,"Whosebug"}] = 69;
for(auto i: timeline)
{
cout<< i.first.first;
cout<< i.first.second;
cout<< i.second;
}
我想知道如何使用 C++ 在地图中插入对,这是我的代码:
map< pair<int, string>, int> timeline;
我尝试使用以下方式插入它:
timeline.insert(pair<pair<int, string> , int>(make_pair(12, "str"), 33);
//and
timeline.insert(make_pair(12, "str"), 33);
但我收到错误
\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)'|
std::map::insert
期望 std::map::value_type
作为其参数,即 std::pair<const std::pair<int, string>, int>
。例如
timeline.insert(make_pair(make_pair(12, "str"), 33));
或更简单为
timeline.insert({{12, "str"}, 33});
如果你想就地构造元素,你也可以使用std::map::emplace
,例如
timeline.emplace(make_pair(12, "str"), 33);
如有疑问,请简化。
auto key = std::make_pair(12, "str");
auto value = 33;
timeline.insert(std::make_pair(key, value));
简单使用传统方式:
timeline[key] = value;
用于插入和检索对:
timeline[{1,"Whosebug"}] = 69;
for(auto i: timeline)
{
cout<< i.first.first;
cout<< i.first.second;
cout<< i.second;
}