小编Cha*_*lie的帖子

在映射中插入一对时,C++ 是否需要额外的代码?

你好伟大的 StackOverflow 社区!我正在制作一些 C++,但在std::map.

这是 2 个映射,将类似 ID 存储unsigned int为键,将另一个对象存储为值:

    std::map<unsigned int, FIFO> _fifos;
    std::map<unsigned int, Kitchen> _kitchens;
Run Code Online (Sandbox Code Playgroud)

两个地图都private在一个类中,我在该类的public方法中插入这样的:

    FIFO newFIFO(_internalCount);
    Kitchen newKitchen(_args, newFIFO);

    _kitchens.insert(std::make_pair(_internalCount, newKitchen));
    _fifos.insert(std::make_pair(_internalCount, newFIFO));
Run Code Online (Sandbox Code Playgroud)

这里开始麻烦。
我的编辑器(VSCode)和编译器(g++)似乎都接受_fifos.insert()但不接受_kitchens.insert().

VSCode 说:

no instance of overloaded function "std::map<_Key, _Tp, _Compare, _Alloc>::insert [with _Key=unsigned int, _Tp=Kitchen, _Compare=std::less<unsigned int>, _Alloc=std::allocator<std::pair<const unsigned int, Kitchen>>]" matches the argument list..."
Run Code Online (Sandbox Code Playgroud)

虽然 g++ 首先显示了这一点,但在列出了 C++ 深处的一堆错误之后(特别是在 stl_pair.h 中):

error: no matching function for call …
Run Code Online (Sandbox Code Playgroud)

c++ stl stdmap std-pair

2
推荐指数
1
解决办法
131
查看次数

标签 统计

c++ ×1

std-pair ×1

stdmap ×1

stl ×1