c++ - 编译 STL map 插入时出现问题

标签 c++ linux gcc stl

我在编译以下代码时遇到问题:

typedef std::map<mUUID, block_ptr_t> BlockMap;
BlockMap _store;

std::pair< BlockMap::iterator, bool > it;
it = _store.insert(hint, std::make_pair(entry.block_uid, block));

错误是:

error: no match for ‘operator=’ in ‘it = BlockStore::_store.std::map<_Key, _Tp, _Compare, _Alloc>::insert [with _Key = mUUID, _Tp = Block*, _Compare = std::less<mUUID>, _Alloc = std::allocator<std::pair<const mUUID, Block*> >](lb, ((const std::pair<const mUUID, Block*>&)(& std::pair<const mUUID, Block*>(((const std::pair<mUUID, Block*>&)((const std::pair<mUUID, Block*>*)(& std::make_pair(_T1, _T2) [with _T1 = mUUID, _T2 = Block*](block))))))))’
/usr/include/c++/4.4/bits/stl_pair.h:68: note: candidates are: std::pair<std::_Rb_tree_iterator<std::pair<const mUUID, Block*> >, bool>& std::pair<std::_Rb_tree_iterator<std::pair<const mUUID, Block*> >, bool>::operator=(const std::pair<std::_Rb_tree_iterator<std::pair<const mUUID, Block*> >, bool>&)

它似乎与分配有关,因为如果我不将它分配给“它”,它会编译而不会出错。

最佳答案

接受提示的 insert 版本只返回一个迭代器,而不是一对迭代器。

关于c++ - 编译 STL map 插入时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5483963/

相关文章:

linux - Hugo 错误 - 当前主题不支持当前版本

linux 排序命令结果让我很困惑

c++ - Cmake 错误 : The following variables are used in the project, 但它们被设置为 NOTFOUND 试图在 archlinux 中编译 Rigs of Rods

c - 与 C 的接口(interface)程序集

c++ - 尝试调用构造函数,收到 "no matching function call"编译错误

c++ - 为什么 volatile 不使用 std::min 编译

c++ - 这种继承结构是否存在切片问题?

c++ - X11 上的 Vulkan : vkGetPhysicalDeviceSurfaceCapabilitiesKHR error

可以知道拆机地址吗

编译 libxml2 得到 "error: storage size of ‘hints’ 未知”