- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我经常看到这样的代码:
if(myQMap.contains("my key")){
myValue = myQMap["my key"];
}
理论上在 QMap 中执行两次查找。
我的第一 react 是它应该被下面的替换,它只执行一次查找并且应该快两倍:
auto it = myQMap.find("my key");
if(it != myQMap.end()){
myValue = it.value();
}
我想知道 QMap 是否会自动为我进行优化?换句话说,我想知道 QMap 是否保存了用 QMap::contains()
找到的最后一个元素的位置,并在执行下一次查找之前首先检查它?
最佳答案
我希望 QMap 提供这两个函数,以便更好地与类接口(interface)。询问映射是否“包含”具有指定键的值比调用“查找”函数更自然。
如代码所示,find 和 contains 都调用了以下内部函数:-
Node *n = d->findNode(akey);
因此,如果您打算使用返回的迭代器,那么使用 find 并检查返回值会更有效,但如果您只想知道该值是否存在于映射中,则调用 contains 可读性更好。
如果查看源代码,您会发现 QMap 是作为节点的二叉树结构实现的。调用 findNode 遍历节点并且不缓存结果。
关于c++ - QMap::contains() VS QMap::find(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19965264/
我经常看到这样的代码: if(myQMap.contains("my key")){ myValue = myQMap["my key"]; } 理论上在 QMap 中执行两次查找。 我的第一
我在 MS Visual C++ 2010 中使用 Qt 4.7.4。 我正在使用以下 QMap: QMap m_oMapHistHandle; 其中 T_FileMapKey 定义为: typed
QVariant (需要 QSettings 类)支持从 QMap 创建 但是尝试初始化这样的东西: QMap)> i; 给出错误: function returning a function. 然后
是否可以写和初始化 QMap> 在 Qt 5.10 中? 例如我想这样做 QMap> ee{"MAC", 0,0,}; // string, section 0, line 0 当我提供 Mac 时
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我在 Windows 8.1 上使用 Qt 5.5。当我运行下面的代码时,应用程序能够通过一次迭代,但在第二次迭代时崩溃。 100% 可重现。 (将其复制/粘贴到 Qt Creator 实例中并进行测
#include template TKey lastKeyOf(const QMap& map) { if (map.isEmpty()) throw something
我正在用 Qt 开发一款游戏。我的角色/对象存储在我的模型类中(我尝试遵循 MVC 模型)。 我为每个对象创建了一个 QMap : QMap *safes; QMap *mushroom; QMap
我想使用我之前创建的 QMap 在插槽内使用。我试过关注 this但它仍然没有用(我想我只是在做一些愚蠢的事情)。这是我正在使用的代码。 构造函数: QMap > tiles; connect(ui
我想在类里面使用 QMap,但出现错误: /* path */.h:18: error: template argument required for ‘class QMap’ class QMap
比较两个 QMaps 并删除不在第一个 map 中的条目并将第二个 map 的条目添加到第一个 map 中的最佳方法是什么?假设我有一张 map {1,2,3} 和一张 map {1,2,4} 我想保
我有一个 QMap 对象: QMap map; 我想通过 TCP 套接字发送它。我必须将其转换为 JSON 然后发送吗? 最佳答案 尝试使用这种方法: 在服务器端使用它来发送 map : // to
大家好 我有一个代码片段如下: class AppCtx { private: QMap pluginsMap; public : void addPlugin(IRzPlugin *plugin
我有一个问题。我想我正在做一些非常愚蠢的事情。我是 C++ 和 Qt 的新手。 我有一个类 SavedVar。我正在尝试向私有(private)成员 Qmap 添加键/值。当我调用 SavedVar:
作为一个新手 valgrind 用户,我无法弄清楚它输出以下消息的原因 40 bytes in 1 blocks are definitely lost in loss 违规代码行如下: void K
我找不到为 QMap 设置自定义比较器函数的方法,就像我可以为 std::map (其模板参数的 typename _Compare = std::less 部分)。 是否 QMap有办法设置吗? 最
我在 C++ 中工作,想创建一个带有 QMap 可选参数的函数。问题是我将默认值设置为什么。我希望它是一张空 map 。 void function(int i, QMap MyMap = ???)
我需要像 QMap 这样的结构,但不需要按键排序,所以如果我先在那里插入项目,我可以计算出这个项目将在所有其他项目之前。并在指定元素之前或之后插入对。 Qt有这样的吗? 最佳答案 QMap 以树的形式
我正在尝试在我的 QT 应用程序中使用此代码 QMap 但是它说存在构建问题 C:/****/****/****/***/domparser.h:14: error: type/value misma
我正在为 Qt 中的 REST API 创建某种路由器,但在将函数指针插入 QMap 时遇到了问题。 我有课IModule其他模块是从中派生出来的。IModule.h的重要线路是 typedef QB
我是一名优秀的程序员,十分优秀!