问题标签 [equal-range]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1088 浏览

c++ - 如何实现等范围“迭代器”

如何实现泛型(又名适用于多图、排序向量...)等范围迭代器?我的意思是它是一个迭代器,它是一对迭代器(特定 equal_range 的开始和结束)

这样做的动机是我有一个称为 sortedword2word 的多图,我用它来检测字符串数组中的字谜。所以我想有一种方法可以轻松地迭代每个相等的范围(就像在 LOC/可读性方式中一样 - 我知道我可以通过手动检查 .end() 并且如果 next 与当前相同... )

如果 boost 已经实现了这样的功能,那么 A 也是可以接受的。

0 投票
1 回答
1230 浏览

c++ - 根据 partial_index_search 的结果提升 multi_index_container 部分索引搜索

为了说明我的问题,我从 Boost 帮助文档的“电话簿”示例中复制了以下代码。

我可以进行如下部分搜索

但是,如果我需要计算姓氏是“White”的人数,然后继续找出有多少“White”的名字是“Dorothea”,那么最好的方法是什么?我想我可以用 pb.find(boost::make_tuple("White") 和 pb.find(boost::make_tuple("White","Dorothea")) 做两个部分查询。但我担心这是否会导致性能问题?由于第二个查询不知道第一个查询,只搜索整个容器。Boost 是否提供如下内容:

或者有没有更聪明的方法来做到这一点?不仅从方便的角度来看,而且从性能的角度来看。

0 投票
1 回答
1364 浏览

c++ - 查找 vs equal_range 和性能

我正在使用 find、equal_range 和我自己的二进制搜索函数进行一些测试,但我无法理解为什么与 find 相比,equal_range 需要这么长时间。

我有一个排序的向量,我计算了搜索操作的持续时间。最初的想法是看看 find 和 equal_range 之间的性能差异是什么,但我期待随着数据量的增长,在向量上迭代会比二分搜索更糟糕,但这并没有发生。

我的代码非常简单,但我“怀疑”这里有问题,我不知道是什么。

-- 编辑 -- 我在 VS2012 中做这些测试 --

这次运行的输出是

干杯

0 投票
1 回答
1288 浏览

c++ - boost::multi_index_container - equal_range 值

我一直在尝试使用带有映射的 boost 进程间库以及现在共享内存中的 multi_index_container 的一些解决方案。使用 multi_index_container,除了迭代从 equal_range 返回的值之外,还有其他方法吗?我希望从我的 non_unique 索引(站名,例如 ST0012345)中检索结果子集,然后查找/获取我需要的实际测量类型(例如温度)。

我需要检索测量点的唯一 pointID 值(例如 ST0012345SMD10000456.VoltsA = pointID - 45789),以将测量值插入数据 Historian。我喜欢 multi_index_container 的想法,因为我们的消息有效负载包含数组中一个站的约 100 到 200 个测量值,所以我想我可以对包含 500,000 多个项目的共享内存容器进行一次调用,然后从一个使用长唯一字符串名称的小得多的列表。

从我所做的阅读看来,我可能只能遍历从 multi_index_container 返回的较小列表,而不是进行获取/查找。

如果是这种情况,我最好还是坚持我原来的共享内存映射解决方案(我正在使用),正如我所说,它包含 500,000 多个长字符串来匹配以检索我们的数据历史记录所需的 pointID。每秒处理 200 个点的数据速率很高(我发现我的数据映射查找在测试环境中每秒可以达到 2000 个查找)。

另外,如果我确实使用了地图,那么在共享内存中拥有几张地图有什么害处,例如悉尼车站的地图(约 300,000 点),纽卡斯尔车站的地图(约 200,000 点)。

下面是我的程序的代码,它从创建 multi_index_container 的单独进程中检索项目。

}

0 投票
3 回答
681 浏览

c++ - equal_range 和 2 重载对“this”指针没有合法转换

这是这个简单的代码

它不编译,并给出以下错误

我看过很多关于这个错误的话题,似乎这是一个const问题。如果我foo(const int* bar)变成foo(int* bar).

问题是,我看不到foo内容应该如何改变我的 MyMap 对象。std::multimap提出一个 const 版本equal_range

http://www.cplusplus.com/reference/map/multimap/equal_range/

我的问题是什么?

谢谢

0 投票
3 回答
389 浏览

c++ - std::equal_range 不适用于具有 operator< 定义的结构

我正在尝试使用std::equal_range下面的结构我有编译错误说error: no match for ‘operator<’

我已经查看了模板 implementationatino 并且失败的是以下*it将指向 MyFoo 对象的迭代器延迟val_为 10。

为什么它不工作?我想可能是因为它试图调用operator< 未定义的全局,但因为我将它定义为不应该成为问题的类成员,不是吗?

0 投票
1 回答
460 浏览

c++ - equal_range 应该如何工作?

我不明白为什么这段代码不打印。由于可能有很多server.url条目,我试图使用equal_range.

0 投票
2 回答
1470 浏览

c++ - 如何在多图中按排序顺序打印键的值

我需要设计一个数据结构,它基本上存储键值对,键是整数,值是字符串。

条件 1:可能有多个值与一个 Key 关联。

条件 2:我需要按降序打印此映射中存储的所有键。

条件3:虽然Keys(整数)按降序打印,但它们对应的值(字符串)必须按字典(升序)顺序打印。

样本输入:

预期输出:

请注意,键是按降序排列的,而值是按升序排列的。

为此,我在 C++ 中提出了以下代码:

但我得到如下所示的输出:

而我需要在 (78, Eve) 之前打印 pair(78, Alice)

0 投票
0 回答
802 浏览

c++ - 擦除 equal_range 迭代器

我有一对迭代器:

该对在 MultiMap 中保存重复的元素 - 例如,有 1 个对象有 2 个以上的重复项(基本上是 3 个对象),我需要删除其中的 2 个,所以只剩下 1 个。

我是通过一个简单的while循环来做到这一点的,如下所示:

之后,只剩下 1 个对象 - 这是我的目标。后来我发现我可能应该尝试通过 1 个函数调用来擦除整个对,并且应该不需要任何循环,如下所示:

这看起来更干净,但问题是它会删除所有对象。

然后我尝试了:

这似乎留下了第一个对象并删除了其余的对象,所以它对我有用,但我的问题是 - 这是正确的方法吗,我在寻找什么?

0 投票
2 回答
198 浏览

c++ - 对 multiset::equal_range 给出的值的 C++ 操作

我正在尝试编写一个程序,该程序从 0 到 9 获取 1000 个随机数,然后计算每个数字出现的次数:

问题出在最后一行(我试图计算 0 出现的次数),它在减号下划线并表示没有运算符与这些操作数匹配。但为什么?隔间不是 zero.first 和 zero.second 端吗?以及如何解决?

编辑:我必须使用 multiset、vector 和 equal_range,这些是我老师选择的东西,而不是我。