- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试学习如何迭代从具有相同键的 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>
,其中存储了您找到的所有映射结果,以及 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
关于c++ - 在 boost::unordered_multimap 中循环遍历 equal_range,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40586437/
我有以下代码,将结构保存到 boost::ptr_vector 容器中。我现在正在尝试通过 equal_range 为这个容器编写一个简单的搜索函数。我选择该函数是因为我想要一个指向序列元素的指针(如
#include #include #include int main() { boost::property_tree::ptree ptree; const std::str
我正在制作一个自定义容器,它使用 STL 列表容器作为其内部结构。我要添加到此容器中的项目之一是 equal_range。 我的 equal_range 的代码在这里: template typen
多线程访问是否需要同步 pair equal_range (const value_type& val) const; 由于 equal_range 是读取操作,因此可能不需要。请给出意见。 最佳答案
我在 C++ 中使用多重映射的相等范围。在我的例子中,同一个键可以有多个条目——因此是多映射。我想知道返回的迭代器是否会按定义的顺序交付项目,还是留给 STL 的实现器。例如,我将在 multimap
我有以下无序 multimap : std::tr1::unordered_multimap duplicates; 然后我尝试使用以下方法获取键的值 std::pair,std::tr1::unor
cplusplus.com 网站上提供了使用 equal_range 的示例: int main () { std::multimap mymm; mymm.insert(std::p
我希望 unordered_multimap::equal_range 具有平均恒定的复杂度,但是以下内容并不像预期的那样随 n 线性扩展: #include #include #include
在讨论multimap和我的学生一起,我注意到一个小的变化可以减少一些样板文件,我想知道是否有人向标准委员会建议过它,如果是的话,回应是什么。 在相等范围内迭代的规范方法是(取自 cplusplus.
我怎么知道 equal_range 没有找到任何匹配案例? 喜欢: multimap mapdic; pair::iterator,multimap::iterator> ret; // insert
我有这段代码,但我无法理解 equal_range 方法返回迭代器的部分。我知道范围是 pair 对象,里面有两个 multimap 对象,但我不明白的是为什么有 'for (it = range.f
我看到一些旧的、非标准的 equal_range 文档明确调用了严格的弱排序(旧的 SGI 文档)和一些更新的、标准的 equal_range 没有(cppreference、libstdc++ 文档
std::equal_range关于 cppreference.com 的文档显示了一个可能的实现: template std::pair equal_range(ForwardIt firs
我有一个使用 map 的性能敏感函数存储一些数据。 我需要能够使用任何 sub string 查找值 其他一些 string作为 key ,无需创建中间层 string (即,目标是防止仅仅因为我想查
下午好,我发现 std:multimap::equal_range 有时会返回不正确的结果。这可能吗?如果是这样,我的代码或指针的哈希函数中是否有解决方法或错误。谢谢。 这是我的代码的摘录: type
在 C++ prime 5 Ed 第 11 章中。关联容器。 “表 11.7。在关联容器中查找元素的操作”: 据说:“c.equal_range(k) 返回一对迭代器,表示具有键 k 的元素。如果 k
我正在使用 find、equal_range 和我自己的二进制搜索函数进行一些测试,但我很难理解为什么 equal_range 与 find 相比需要这么长的时间。 我有一个排序 vector ,我计
我的理解是,我们不能对无序...容器中元素的顺序做出任何假设(即使它们是通过哈希表实现的)。如果那是正确的,那么 std::unordered_multiset::equal_range() 如何返回
假设我有一个类来保存传感器测量值,我创建了一个 boost 多索引容器,其中包含时间的复合键和每个测量值的 id: namespace { struct ValueUpdateMsg {
下午好,我想知道std::multimap::equal_range 的时间复杂度是多少?它是 Big-O(n) 还是 BIG-0(log n)。我记得读过 std::multimap::erase
我是一名优秀的程序员,十分优秀!