草庐IT

find_end

全部标签

c++ - 如何模拟不存在的 find_first_not_of 函数?

std::basic_string类模板有成员函数find_first_of和find_first_not_of。然而,header只包含一个通用的find_first_of。问题1:是缺席std::find_first_not_of(Iter1first1,Iter1last1,Iter2first2,Iter2last2)只是一个疏忽(例如copy_if)还是故意省略,因为该行为可以通过另一个标准函数实现?当然我可以自己写find_first_not_of,但是问题2:中是否有现成的解决方法??例如,缺少copy_if由remove_copy_if的存在补偿提前致谢

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++ - 二进制搜索中 mid=(beg+end)/2 和 mid=beg+(end-beg)/2 有什么区别?

是C++primerfifthedition3.26的一道题,不知道有什么区别?可能是第二种可以避免溢出。 最佳答案 Maybethesecondonecanavoidoverflow.没错。不能保证beg+end是可表示的;但在第二种情况下,中间值以及预期结果不大于end,因此不存在溢出的危险。第二种形式也可用于仿射类型,如指针和其他随机访问迭代器,它们可以相减得到距离,但不能相加。 关于c++-二进制搜索中mid=(beg+end)/2和mid=beg+(end-beg)/2有什么区

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++ - 为什么使用 rbegin() 而不是 end() - 1?

我想知道使用rbegin()而不是end()-1对STL容器有什么好处。例如,你为什么要使用这样的东西:vectorv;v.push_back(999);vector::reverse_iteratorr=v.rbegin();vector::iteratori=r.base();而不是:vectorv;v.push_back(999);autor=v.end()-1; 最佳答案 rbegin()返回一个带有reverseoperator++的迭代器;也就是说,使用reverse_iterator,您可以向后遍历容器。例子:#inc