我有以下的无序多重映射:遍历equal_range结果集
std::tr1::unordered_multimap<unsigned int, unsigned int > duplicates;
我尝试使用
std::pair<std::tr1::unordered_multimap<unsigned int, unsigned int>,std::tr1::unordered_multimap<unsigned int, unsigned int> > range = duplicates.equal_range(id);
获得关键的值,然后使用for循环,以获得多结果:
for (std::tr1::unordered_multimap<unsigned int, unsigned int>::iterator it=range.first; it!=range.second; ++it)
,但我得到了以下错误:
ref_impl/core.cpp:306:84: error: conversion from 'std::tr1::unordered_multimap<unsigned int, unsigned int>' to non-scalar type 'std::tr1::_Hashtable<unsigned int, std::pair<const unsigned int, unsigned int>, std::allocator<std::pair<const unsigned int, unsigned int> >, std::_Select1st<std::pair<const unsigned int, unsigned int> >, std::equal_to<unsigned int>, std::tr1::hash<unsigned int>, std::tr1::__detail::_Mod_range_hashing, std::tr1::__detail::_Default_ranged_hash, std::tr1::__detail::_Prime_rehash_policy, false, false, false>::iterator {aka std::tr1::__detail::_Hashtable_iterator<std::pair<const unsigned int, unsigned int>, false, false>}' requested
ref_impl/core.cpp:306:101: error: no match for 'operator!=' in 'it != range.std::pair<std::tr1::unordered_multimap<unsigned int, unsigned int>, std::tr1::unordered_multimap<unsigned int, unsigned int> >::second'
有什么建议吗?
我在使用auto时得到以下内容:warning:'auto'在C++ 11中更改含义;请删除它[-WC++ 0x-compat] – glarkou 2013-03-16 02:20:32
@salamis:你在使用什么编译器?尝试在编译时向命令行添加“-std = C++ 11”或“-std = C++ 0x”。 – 2013-03-16 02:21:51
我在Mac OS上使用4.7.2 – glarkou 2013-03-16 02:23:43