问题标签 [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.
java - Java 等效于 C++ std::map?
我正在寻找一个具有 C++ std::map 通常实现特性的 Java 类(据我了解,一个自平衡二叉搜索树):
- 插入/删除/搜索的 O(log n) 性能
- 每个元素由唯一的键和映射的值组成
- 键遵循严格的弱排序
我正在寻找具有开源或设计文档的实现;我可能最终会推出自己对原始键/值的支持。
这个问题的风格类似于:Java 等效于 std::deque,其答案是“ArrayDeque from Primitive Collections for Java”。
c++ - 无法创建 MoveConstructibles 的地图
我有一个包含 a 的类std::unique_ptr<>
,我想把这个类的实例放在一个std::map<>
. 我认为促使将移动语义引入 C++ 的原因之一是将诸如此类的东西unique_ptrs
放入标准容器中的可能性(在向量的情况下确实有效)。但在我看来,std::map<>
不喜欢这个想法。为什么会这样?
谢谢。
- 编辑
为了更清楚,确切的错误消息是:
看起来这是一个问题std::pair<>
,但单独使用时效果很好:
虽然这显然并不意味着它不能被滥用:
这可能是std::map<>
.
线索?
- 编辑
查看错误消息,确实恰好是 TDM-GCC 4.4.1 的std::map<>
实现存在问题。它似乎没有像std::vector<>::push_back(value_type&&)
.
现在做什么?
c++ - Boost.Bind 访问 std::for_each 中的 std::map 元素
我有一个地图,它存储一个带有键的简单结构。该结构有两个成员函数,一个是 const 另一个不是。我已经成功地使用 std::for_each 调用了 const 函数,没有任何问题,但是我在调用非常量函数时遇到了一些问题。
对 const 成员函数的调用工作正常,但似乎 boost 内部期望某个地方有一个 const MyStruct,因此在 MSVC7.1 中失败并出现以下编译错误。
boost\bind\mem_fn_template.hpp(151): 错误 C2440: 'argument' : 无法从 'const MyStruct *__w64 ' 转换为 'MyStruct *const '
我将不胜感激有关如何正确设置模板参数的任何帮助,因此 bind 确实可以正确识别参数并让我调用非 const 函数。
谢谢,卡尔
c++ - VS2010 RC - 调试器中只有 100 个 std::map 元素
当我想查看 std::map 容器的所有元素时,我在 VS 2010 RC 中调试我的应用程序时遇到了一个小问题。
当调试器到达断点并且我想在元素检查器中检查地图的值时(在“本地”窗口和用鼠标悬停变量名称后的弹出窗口中)并且我正在向下滚动列表元素它停在第 100 个元素上,我不能下一个元素。该地图包含 200 多个元素(地图的计数器参数正确显示了这一点)但我无法在元素检查器中查看它们。
std::map<int, int>
即使在用 200 个 int 值填充的最简单的情况下也会出现问题。
也许这是设置的问题,但我已经尝试了很多组合,但仍然无法正常工作。也许有人有一些想法如何解决这个问题。
预先感谢您的帮助。
c++ - std::map 默认值
当键不存在时,有没有办法指定默认值std::map
的返回?operator[]
c++ - 删除 std::map (Visual C++)
我有一个指向我试图删除的地图的指针(这个地图是用新分配的)。
我认为这张地图是有效的,当我在调试时将鼠标悬停在它上面时,它显示pMap
:[0]()
..
当我尝试删除这个空地图时,我的应用程序就退出了,我得到了一个
myapp.exe 中 0xsomelocation 的第一次机会异常:0xsomenumber:调用的对象已与其客户端断开连接。
在输出窗口中。这是什么意思?
谢谢..
编辑:这是一些示例代码:
StructB 有一个重载的运算符()
编辑:StructB 确实是一个结构,对不起,运算符 () 只是一个字符串比较函数..
在我的代码的某些部分,一个类的构造函数调用一个方法,我们称之为 InitClass(),它像这样初始化一个 myMap 指针:
稍后在这个类的析构函数中,我去
谢谢
编辑:我恢复到旧版本的工作代码,现在工作正常..
起作用的是这样的:
早些时候,我将其更改为:
奇怪..代码中可能还有其他问题,但我只是不知道在哪里..如果我完整地发布代码,它太大了(我可能会被解雇)所以让我们离开就这样。。
我认为它可能是一个指向我试图清除或删除导致问题的空映射的指针。
感谢所有试图提供帮助的人...... :)
c++ - 为什么没有像我期望的那样使用 map 调用复制构造函数?
我在使用带有 std::map 的自定义类时遇到问题。该类为成员动态分配内存,我不想在映射中使用指针,因为我想确保该类负责删除所有分配的内存。但是我遇到的问题是在我将项目添加到地图之后,当该代码块超出范围时,即使它仍在地图上,也会调用对象析构函数。我在下面做了一段假代码来说明我的意思。输出是:那么问题是为什么要调用最终的析构函数?在此先感谢,很抱歉这个问题很长。
c++ - C++ 长 switch 语句还是用地图查找?
在我的 C++ 应用程序中,我有一些值作为代码来表示其他值。为了翻译代码,我一直在争论是使用 switch 语句还是 stl map。开关看起来像这样:
地图将是一个stl::map<int, int>
,翻译将是一个简单的查找,代码用作键值。
哪个更好/更高效/更清洁/被接受?为什么?
java - 是否有与 C++ 的 std::map 等效的 Java Map keySet()?
是否有与 C++ 等效的 Java Map keySet() std::map
?
JavakeySet()
方法返回“此映射中包含的键的集合视图”。
c++ - 无法从指针访问映射成员
这是我的第一个问题:)
我将程序的配置存储在一个Group->Key->Value
表单中,就像旧的 INI 一样。我将信息存储在一对结构中。
第一个,我使用std::map
字符串+ptr 作为组信息(字符串键中的组名)。第二个std::map
值是指向第二个结构的指针,a std::list
of std::map
s,带有完成Key->Value
对。
Key->Value 对结构是动态创建的,所以配置结构是:
好吧,我正在尝试实现两种方法来检查内部配置中是否存在数据。第一个,检查结构中是否存在组:
第二种方法,让我发疯......它检查组内是否存在密钥。
我不明白出了什么问题。编译器说:
但它必须有第二个成员,因为它是一个地图迭代器......
关于发生了什么的任何建议?
对不起我的英语:P,并考虑我正在做它作为一个练习,我知道有很多很酷的配置管理器。