我正在尝试学习如何迭代从具有相同键的boost :: unordered_multimap返回的值。所以,我这样做了,
//隐藏App导航条,使用RN自己的导航条
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
self.navigationController.navigationBar.hidden = YES;
// self.navigationController.navigationBarHidden = YES; //这句是 **完全没** 个卵用
// [self.navigationController setNavigationBarHidden:YES animated:NO];
}
- (void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
[self.navigationController setNavigationBarHidden:YES animated:NO];
}
//恢复App导航条
- (void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
self.navigationController.navigationBar.hidden = NO;
// self.navigationController.navigationBarHidden = NO; //这句是 **完全没** 个卵用
[self.navigationController setNavigationBarHidden:NO animated:NO];
}
我也许,
boost::unordered_multimap<string, string> sample;
我尝试获取对应于&#34;两个&#34;的值。所以我这样做了,
<"one", "1">,
<"one", "11">,
<"two", "2">,
<"three", "3">,
<"three", "3">,
<"three", "33">,
<"three", "333">,
和我一样迭代,
std::pair<boost::unordered_multimap<string, string>::iterator, boost::unordered_multimap<string, string>::iterator> > ret = sample.equal_range("two");
我会得到值:2,因为这是映射的唯一值吗?我会第一次离开循环吗?我试图在线获得答案/关于提升文档,但我还没有成功。这可能是一个基本问题,但我正在努力学习。任何帮助将不胜感激。
TIA
-R
答案 0 :(得分:0)
关于提升:equal_range(键&amp; vkey):
<强>用法:强>
std::pair<iterator, iterator> Equal_Range = Unordered_Map.equal_range("key");
<强>返回:强>
地图表包含 KEY: key
的所有映射结果。 Equal_Range.first
表示结果表中的第一个位置,而Equal_Range.second
表示最后一个位置。 特殊情况:如果仅匹配一个元素,ret.first
指向key
映射的位置,ret.second
指向原始地图上的最后一个位置: original_map.last
。
因此,使用equal_range(key& vkey)
,您已经获得了结果表std::pair<itr1, itr2>
,其中存储了您找到的所有映射结果,itr1
是vkey
映射的第一个位置而itr2
代表最后一个。所以你的代码工作正常:
for(auto Itr = ret.first; Itr != ret.second; ++Itr)
std::cout << "The values mapped are : " << Itr->second << std::endl;
测试案例 key
= "three"
The values mapped are : 3
The values mapped are : 3
The values mapped are : 33
The values mapped are : 333