c++ - 将 std::tuple 插入 std::map

标签 c++ dictionary insert tuples

以下示例代码无法编译,我不知道如何将 inttuple 插入到 map 中。

#include <tuple>
#include <string>
#include <map>

int main()
{
    std::map<int, std::tuple<std::wstring, float, float>> map;
    std::wstring temp = L"sample";

    // ERROR: no instance of overloaded function matches the argument list
    map.insert(1, std::make_tuple(temp, 0.f, 0.f));

    return 0;
}

将示例 int, std::tuple 插入 map 的正确方法是什么

最佳答案

要么做

map.insert(std::make_pair(1, std::make_tuple(temp, 0.f, 0.f)));

map.emplace(1, std::make_tuple(temp, 0.f, 0.f));

这实际上更好,因为它创建的临时文件更少。

编辑:

甚至可以完全不创建临时对象:

map.emplace(std::piecewise_construct, std::forward_as_tuple(1),
    std::forward_as_tuple(temp, 0.f, 0.f));

关于c++ - 将 std::tuple 插入 std::map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55401103/

相关文章:

java - JPA:如何插入将 PK 设置为 MAX(PK) + 1

c++ - Qt - 如何在 QCustomPlot 上定义 Axis 间隔?

java - 如何在同一个查询中同时将两个Arraylist值插入到数据库表中

C++ boost 条件类型不接受函数参数

c - 在字典中查找单词 C 编程

java - 按值降序对 linkedhashmap 进行排序

javascript - 为什么我的 d3 map 函数返回未定义的源属性?

sql-server - 如何将表 1 中的几列复制到表 2 中,同时还在表 2 中定义某些静态行?

c++ - 返回并传递数组以在 C++ 中运行

c++ - Mac OS X 的 OpenGL 红皮书