debugging 为什么我不能在无序MapC++中插入结构值

sgtfey8w  于 2022-09-27  发布在  其他
关注(0)|答案(1)|浏览(88)

我创建了一个非常简单的例子来说明这个问题:

#include <unordered_map>

int main() {
    struct Example {
        int num;
        float decimal;
    };

    std::unordered_map<int, Example> map;
    map.insert(1, { 2, 3.4 }); // Error none of the overloads match!
}

我应该可以插入到int和struct的Map中,但是编译器说没有一个重载匹配。

tjvv9vkg

tjvv9vkg1#

出现错误消息的原因是,std::unordered_map::insert的重载都不接受键和值参数。
你应该做

map.insert({1, { 2, 3.4 }});

代替

map.insert(1, { 2, 3.4 });

您可以参考https://en.cppreference.com/w/cpp/container/unordered_map/insert处std::unordered_map::insert的第6个重载

相关问题