gpt4 book ai didi

c++ - 在 boost::unordered_multimap 中循环遍历 equal_range

转载 作者:行者123 更新时间:2023-11-28 05:25:40 26 4
gpt4 key购买 nike

我正在尝试学习如何迭代从具有相同键的 boost::unordered_multimap 返回的值。所以,我这样做了,

boost::unordered_multimap<string, string> sample;

我有可能,

<"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");

然后我像这样遍历它,

for(boost::unordered_multimap<string, string>::iterator> it = ret.first ; it != ret.second; it++)
{
cout<<"The values mapped are : "<<*it->second<<"\n";
}

我会得到值 : 2,因为这是唯一映射的值吗?我会第一次脱离循环吗?我试图在线/在 boost 文档上获得答案,但我没有成功。这可能是一个基本问题,但我正在努力学习。任何帮助将不胜感激。

TIA

-R

最佳答案

关于boost: equal_range(key& 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指向原始 map 上的最后一个位置:即original_map.last .

所以通过使用 equal_range(key& vkey) , 你已经得到了结果表 std::pair<itr1, itr2> ,其中存储了您找到的所有映射结果,以及 itr1vkey 映射的第一个位置同时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

关于c++ - 在 boost::unordered_multimap 中循环遍历 equal_range,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40586437/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com