问题标签 [stdmap]

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 投票
8 回答
74638 浏览

c++ - std::map 插入或 std::map 查找?

假设您要在其中保留现有条目的地图。20% 的时间,您插入的条目是新数据。使用返回的迭代器执行 std::map::find 然后 std::map::insert 是否有优势?或者尝试插入然后根据迭代器是否指示记录已插入或未插入是否更快?

0 投票
3 回答
2788 浏览

insert - 对于 std::map,如果必须调整容器大小并且内存不可用,插入将如何表现?

对于 std::map,如果必须调整容器大小并且内存不可用,插入将如何表现?

0 投票
22 回答
446654 浏览

c++ - 如何从 std::map 中检索所有键(或值)并将它们放入向量中?

这是我出来的可能方式之一:

当然,我们也可以通过定义另一个函子RetrieveValues从地图中检索所有值。

有没有其他方法可以轻松实现这一目标?(我一直想知道为什么 std::map 不包含一个成员函数供我们这样做。)

0 投票
4 回答
3399 浏览

c++ - 谁能推荐一个 C++ std::map 替换容器?

地图非常适合轻松完成任务,但它们会占用内存并且存在缓存问题。当你有一个关键循环中的地图时,这可能会很糟糕。

所以我想知道是否有人可以推荐另一个具有相同 API 但使用向量或哈希实现而不是树实现的容器。我的目标是交换容器,而不必重写所有依赖于地图的用户代码。

更新:性能方面最好的解决方案是在 std::vector 上测试地图外观

0 投票
12 回答
532890 浏览

c++ - 初始化静态 std::map在 C++ 中

初始化静态地图的正确方法是什么?我们需要一个静态函数来初始化它吗?

0 投票
3 回答
7397 浏览

c++ - boost::shared_ptr 标准容器

假设我有一个类 foo,并希望使用 std::map 来存储一些 boost::shared_ptrs,例如:

如果我向地图添加了一个新的 foo_sp 但使用的键已经存在,是否会删除现有条目?例如:

原来的指针(p)被p2替换后会被释放吗?我很确定它会是,但我认为值得询问/分享。

0 投票
14 回答
19529 浏览

c++ - 如何使用键类型 std::string 提高地图查找的性能?

我正在使用std::map(VC++ 实现),通过地图的 find 方法进行查找有点慢。

密钥类型是std::string

我可以std::map通过地图的自定义键比较覆盖来提高此查找的性能吗?例如,也许< compare在比较数据之前std::string没有考虑简单的比较?string::size()

还有其他加快比较速度的想法吗?

在我的情况下,地图将始终包含 < 15 个元素,但它正在不停地被查询并且性能至关重要。也许有一个更好的数据结构我可以使用它会更快?

更新:地图包含文件路径。

更新2:地图的元素经常变化。

0 投票
5 回答
63975 浏览

c++ - std::map 中的最后一个键

我正在寻找 std::map 的最高键值(由比较运算符定义)。

这是保证

?

(我对反向迭代器有点动摇,在 std::map 的实现中有多少自由)

如果不是,请指教。我无法更改数据结构。

0 投票
13 回答
163413 浏览

c++ - 在 STL 映射中,使用 map::insert 比使用 [] 更好吗?

前段时间,我和一位同事讨论了如何在 STL映射中插入值。我更喜欢map[key] = value;它,因为它感觉自然并且读起来很清楚,而他更喜欢map.insert(std::make_pair(key, value))

我刚问过他,我们都不记得为什么 insert 更好,但我相信这不仅仅是一种风格偏好,而是效率等技术原因。SGI STL 参考简单地说: “严格来说,这个成员函数是不必要的:它只是为了方便而存在。”

谁能告诉我这个原因,还是我只是梦想有一个?

0 投票
10 回答
72542 浏览

c++ - 检查值存在于 std::map - C++

我知道find方法在std::map中找到提供的键并将迭代器返回到元素。反正有没有找到值并获得元素的迭代器?我需要做的是检查 std::map 中是否存在指定的值。我通过循环地图中的所有项目并进行比较来做到这一点。但我想知道有没有更好的方法。

这是我写的

编辑

如何在内部使用另一个存储值、键组合的地图。所以我可以调用 find 吗?std::map 中的find()是否进行顺序搜索?

谢谢