问题标签 [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 投票
3 回答
27323 浏览

c++ - 模板类值的 C++ std::map

我正在尝试声明一个Row和一个Column类,其中Row有一个私有std::map值指向一个模板Column。像这样的东西:

好吧,我想原则上这个类不应该知道我们想使用Row哪种Field(或),即它是第1 列中的 a 还是第2 列中的 a 。但我不确定什么是正确的语法对于声明,或者如果在这个意义上是有限的,我应该使用别的东西。ColumnField<int>Field<double>Row::columnstd::map

我感谢您的建议,并提前感谢您的建议。

0 投票
6 回答
28914 浏览

c++ - 为什么调用 std::map::clear() 后内存仍然可以访问?

我正在观察 std::map::clear() 的奇怪行为。此方法应该在调用时调用元素的析构函数,但是在调用 clear() 后仍然可以访问内存。

例如:

问题是,为什么变量a在 map::clear() 调用其析构函数后仍然可以访问?delete a;调用后我需要写my_map.clear()还是覆盖内容是否安全a

提前感谢您的帮助,斯内格

0 投票
1 回答
706 浏览

c++ - 带有std :: map :: const_iterator的模板类中的嵌套结构?

以下代码在声明迭代器的行生成语法错误:

这仅在 A 是模板类时发生。这段代码有什么问题?如果我将 B 从 A 中移出,则代码编译得很好。

0 投票
5 回答
13394 浏览

c++ - C++ const std::map 引用无法编译

传递对 a std::mapas const 的引用会导致 [] 运算符中断是否有原因?使用 const 时出现此编译器错误(gcc 4.2):

错误:“map[name]”中的“operator[]”不匹配</p>

这是函数原型:

const而且,我应该提一下,当我删除. 前面的关键字时没有问题std::map

如果我的指示正确,如果 [] 运算符找不到密钥,它实际上会在映射中插入一个新对,这当然可以解释为什么会发生这种情况,但我无法想象这会是可接受的行为。

如果有更好的方法,比如使用find而不是 [],我将不胜感激。我似乎也无法找到工作……我收到const mismatched iterator 错误。

0 投票
7 回答
40934 浏览

c++ - 我如何估计 std::map 的内存使用情况?

例如,我有一个已知 sizeof(A) 和 sizeof(B) 的 std::map,而 map 里面有 N 个条目。你如何估计它的内存使用量?我会说这就像

但因素是什么?也许不同的公式?

也许要求上限更容易?

0 投票
2 回答
884 浏览

c++ - std::map 迭代器不在 MFC 应用程序中迭代

我在旧版 MFC 应用程序中声明了一个 std::map:

m_NutrientInfoMap 在应用程序加载时通过循环遍历表并创建 CNutrientInfo 实例然后将其插入到 std:map 中来填充,如下所示:

std::map 现在包含由数据库定义的营养素列表。在某些时候,用户可以将新的营养素添加到此列表中,并检查用户添加的内容是否已存在于列表中。它会像这样检查:

或者至少它应该是。当函数实际被调用时,它永远不会超过 while 循环的初始行。在那里放置一个断点只是表明有问题的行被一遍又一遍地调用并且永远不会超过它,这会挂起应用程序。如果您进入实际比较,它会正确比较,然后返回到 while 循环行。再次进入循环体只是返回到 while 循环行。同样的逻辑在应用程序的其他地方使用没有问题,所以我很难理解在这种情况下发生了什么。我已经使用 for 循环重新编写了上面的逻辑,它工作得很好,所以我并不是无法解决它,但 C++ 不是我最强大的语言,因为这是我的遗留应用程序我试图帮助支持,我' 我真的很想学习和理解为什么这样做是为了将来参考。另外,由于逻辑在其他地方而不是在这里起作用,因此可能有一个根本原因是实际需要解决的问题。

对此的任何建议或想法将不胜感激。

提前致谢。

0 投票
3 回答
3424 浏览

c++ - 插入 C++ std::map 时出现奇怪的错误

我正在尝试将一些值对插入到 std::map 中。在第一种情况下,我收到一个指向地图的指针,取消引用它并使用下标运算符分配一个值。IE

后来,当我尝试遍历集合时,返回的键/值对在所有情况下都包含 null 的 value 属性,但第一个 (map.begin()) 项除外。奇怪的是,如果我通过地图的插入功能进行插入,一切都很好,即:

为什么会这样?这两种方法在功能上不是等效的吗?我在下面粘贴了一些实际代码片段作为上下文

我完全没主意了。请问有人有什么建议吗?

0 投票
8 回答
24959 浏览

c++ - C++ 线程安全映射

有谁知道我在哪里可以找到包装 astd::map并使其线程安全的暗示?当我说线程安全时,我的意思是它只提供对映射的串行访问,一次一个线程。理想情况下,此地图应仅使用标准库和/或增强结构。

0 投票
6 回答
5601 浏览

c++ - 迭代器与反向迭代器

std::map用来存储很多元素(元素对),我有一个“小”的疑问。在 my或std::map上迭代所有元素更有效的是什么?iteratorreverse_iterator

0 投票
3 回答
23551 浏览

c++ - 如何在 C++ 中使用自定义类型作为映射的键?

我正在尝试将自定义类型分配为std::map. 这是我用作键的类型:

与 一起使用时std::map,我收到以下错误:

如果我将其更改为struct以下,一切正常:

没有任何改变,除了操作符被重载为friend。为什么我的第一个代码不起作用?