【发布时间】:2019-09-14 18:33:30
【问题描述】:
我注意到 unordered_map::equal_range upper_bound (first) 如果传递的 key 小于 map 的第一个 key,则返回 end
#include <iostream>
#include <map>
#include <tr1/unordered_map>
using namespace std;
int main ()
{
{
std::map<char,int> mymap;
mymap['c'] = 60;
std::map<char,int>::iterator itup = mymap.equal_range('a').first;
std::cout << "map::itup " << itup->first << std::endl;
}
{
tr1::unordered_map<char, int> mymap;
mymap['c'] = 60;
mymap['d'] = 70;
tr1::unordered_map<char, int>::iterator itlo = mymap.equal_range('a').first;
tr1::unordered_map<char, int>::iterator itup = mymap.equal_range('a').second;
cout << "unordered_map::itup " << (itup == mymap.end() ? "END" : "NOT END") << std::endl;
cout << "unordered_map::itlo " << (itlo == mymap.end() ? "END" : "NOT END") << std::endl;
}
return 0;
}
输出是:
map::itup c
unordered_map::itup END
unordered_map::itlo END
请注意,map 和 unordered_map 的行为不同 - 有什么原因,或者这是 unordered_map 的问题吗?
【问题讨论】:
-
因为
unordered_map是,嗯,无序?
标签: c++ stl unordered-map equal-range