草庐IT

find_one

全部标签

c++ - QMap::contains() VS QMap::find()

我经常看到这样的代码:if(myQMap.contains("mykey")){myValue=myQMap["mykey"];}理论上在QMap中执行两次查找。我的第一react是它应该被下面的替换,它只执行一次查找并且应该快两倍:autoit=myQMap.find("mykey");if(it!=myQMap.end()){myValue=it.value();}我想知道QMap是否会自动为我进行优化?换句话说,我想知道QMap是否保存了用QMap::contains()找到的最后一个元素的位置,并在执行下一次查找之前首先检查它? 最佳答案

c++ - 优化的 argmin : an effective way to find an item minimizing a function

假设我有一个项目集合和对它们的评分函数:structItem{/*somedata*/};std::vectoritems;doublescore(Item);我想从该集合中找到分数最低的项目。一个简单的写法是:constautoargmin=std::min_element(begin(items),end(items),[](Itema,Itemb){returnscore(a)但如果score是一个计算量很大的函数,std::min_element的事实实际上在某些项目上多次调用它可能令人担忧。这是预料之中的,因为编译器无法猜测score是purefunction.我如何找到ar

c++ - 在 `std::search` 上使用 `string::find`

我有一个关于使用std::search与string::find处理字符串的问题。我知道使用特定于类的成员函数算法通常比标准库算法更好,因为它可以基于类进行优化,但我想知道为了一致性,使用std是否合理::search使用迭代器而不是string::find使用索引。做那样的事情对我来说是一种罪过还是我应该坚持使用string::find?两者在性能或风格方面是否有任何巨大优势? 最佳答案 现在(2017年4月27日),至少GCCslibstdc++(默认情况下也被clang使用)实现了std::string::find线性搜索,因

c++ - 为什么 `std::string` 有一个 `find` 成员函数?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。为什么std::string有一个find成员函数,而std::vector和friend没有?在字符串上使用std::find有什么问题吗?

c++ - 为什么这个 std::find 不能比较这些对象

通常当我执行std::find时,我会将谓词作为第三个参数,但这次我想我会做不同的,我不明白为什么它不起作用。#include#include#includestructRenderJob{RenderJob(){};intrenderJob_ID;booloperator==(RenderJob&rhs){returnrhs.renderJob_ID==this->renderJob_ID;}};intmain(){RenderJobfoo;RenderJobfoo2;foo==foo2;//Worksstd::vectorrenderJobs;std::find(renderJob

c++ - std::map: find(key)->second 比 [] 运算符快吗?

std::mapx;x[5]=1.2;doubley=x[5];doublez=x.find(5)->second;这2个分配中的一个会比另一个执行得更快吗?(假设请求的键始终存在于映射中)在执行x.find(5)->second时,是否存在与迭代器取消引用相关的任何开销?编辑:感谢您的回复。在我的特定函数中,既然我知道它并不慢,我可能会使用x.find(5)->second因为我需要标记我的函数const(map是一个成员变量)并且[]运算符显然不允许这样做(因为它可能会修改map,因为缺少一个键)。 最佳答案 这没有回答您的问题

c++ - 错误 C2039 : 'find' : is not a member of 'std'

我刚遇到一个奇怪的错误,说find不是std的成员。errorC2039:'find':isnotamemberof'std'errorC3861:'find':identifiernotfound基本上,我想查找是否可以在vector中找到一个字符串知道为什么会这样吗?代码帮助告诉我在std中有find方法。这基本上就是我所做的:#include"OperatorUtil.h"#include#include#include#include#includeusingnamespacesaeConfig;namespaceoperatorUtil{boolisIn(constFilte

c++ - 网络游戏作弊: Is it possible to prevent one Win32 process from inspecting/manipulating another's memory?

我玩在线游戏《魔兽世界》,该游戏受到自动机器人的困扰,这些机器人检查游戏的分配内存以读取游戏/玩家/世界状态信息,这些信息用于机械地玩游戏。他们有时也会直接写入游戏的内存本身,但据我所知,更复杂的不会。该游戏的供应商BlizzardEntertainment有一个名为Warden的单独应用程序,它应该可以检测和禁用类似的黑客和作弊行为,但它并不能捕获所有内容。是否可以制作一个Windows应用程序,让您是唯一一个可以将您读入内存的内容读入内存的应用程序?在数百万台机器上运行的大型C++应用程序上实现这种做法是否实用? 最佳答案 做不

c++ - DirectX SDK 与 Windows SDK : which one to use?

我有一个(某种程度上)基于DirectX10的旧游戏引擎,我一直计划将其迁移到DX11。我还刚刚安装了Windows8和VS2013,在尝试运行这个旧项目时,我了解到DirectXSDKhasbeendeprecated现在被Windows8SDK取代。在这种情况下,我想知道更新到DX11是否有意义,还是我应该尝试让我的引擎使用新的Windows8SDK。在做出决定之前,我想知道几件事:1)Windows8SDK是现在要学习的东西还是DX11仍然相关?比如,如果你想学习C++,你应该学习C++11,那么如果你现在想学习Direct3D,你应该学习Windows8SDK?2)学习Dire

windows - 在 Windows 8.1 : Trying to override Windows/System32/find. exe 上为 CMD 设置系统路径

我试图覆盖windowsfind命令,以便我可以调用find的另一个实现。另一个实现由MSYS提供,位于C:\MinGW\msys\1.0\bin。在Windows7上,我可以打开一个CMD,然后运行:SETPATH=C:\MinGW\msys\1.0\bin;%PATH%由于在C:\Windows\System32\路径之前添加了MSYS路径前缀,因此当在Windows7上的CMD中调用find时,将执行MSYS版本。该命令不适用于Windows8.1。当我在Windows8.1的CMD中调用find时,无论我做什么,它都默认为Windows实现。有没有办法在Windows8.1上覆