草庐IT

find_element

全部标签

c++ - 被 const 逼入绝境:std::map::find() const 重载

考虑以下片段:#includeclassC{public:C(){}constint&f(constint&x)const{//Error:cannotcastconstint*toint*constreturnmyMap.find(&x)->second;//Withaconst_castworks://returnmyMap.find(const_cast(&x))->second;}std::mapmyMap;};int_tmain(intargc,_TCHAR*argv[]){intx=0;Cc;c.f(x);return0;}f()中的错误是由map的find()的const

c++ - C 和 C++ : Array element access pointer vs int

如果您执行myarray[i]或将myarray[i]的地址存储在指针中,是否存在性能差异?编辑:这些指针都是在我的程序中一个不重要的步骤中计算出来的,性能不是标准。在关键部分,指针保持静态并且不被修改。现在的问题是这些静态指针是否比一直使用myarray[i]更快。​​ 最佳答案 对于这段代码:intmain(){inta[100],b[100];int*p=b;for(unsignedinti=0;i在g++中使用-O3优化构建时,语句:a[i]=i;产生汇编输出:mov%eax,(%ecx,%eax,4)和这个声明:*p++=

c++ - 在 c++ 中加速 map<string,int> .find() 的最快方法。按键按字母顺序排列的位置

我有一张包含大约100,000对的map。有什么方法可以在使用find()时加快搜索速度,因为键是按字母顺序排列的。另外我应该怎么做。我知道您可以在创建map时指定一个新的比较器。但这会加速find()函数吗?提前致谢。[已解决]感谢一群人,我决定使用vector并使用下界和上界来“剪断”一些搜索。我也是新来的,有什么方法可以将这个问题标记为已回答,或者选择一个最佳答案吗? 最佳答案 不同的比较器只有在设法更快地进行比较时才会加快查找速度(这对于字符串通常非常困难)。如果您基本上是按顺序插入所有数据,然后进行搜索,则使用std::v

c++ - std::string::find 在 C++ 中无法正常工作

我正在尝试验证特定字符串是否在输入字符串中,如果是,则根据找到的字符串执行某些操作;但似乎无论如何它总是在做第一个任务......if(inputString.find(str1)>=0){//dosomething}elseif(inputString.find(str2)>=0){//dosomethingelse}else{std::cout无论inputString中是否存在str1,它总是进入//dosomethingblock。如果我这样做intstr1pos=inputString.find(str1);intstr2pos=inputString.find(str2);

c++ - 错误 : Variable length array of Non-POD element type 'string'

在开始之前,我必须首先声明,我已经研究过针对此错误的可能解决方案。不幸的是,它们都与不使用数组有关,这是我项目的要求。另外,我目前正在学习CS入门类(class),所以我的经验几乎没有。数组的用途是从文件中收集名称。因此,为了初始化数组,我计算了名称的数量并将其用作大小。问题是标题中所述的错误,但我仍然使用一维数组时看不到解决方法。主要.cpp#include#include#include#include#include#include"HomeworkGradeAnalysis.h"usingnamespacestd;intmain(){ifstreaminfile;ofstrea

c++ - 与 min_element 和 max_element 一起使用 minmax_element 是否有任何效率优势?

std::minmax_element:返回一个对,该对由指向最小元素的迭代器作为第一个元素和指向最大元素的迭代器作为第二个元素组成。std::min_element:返回指向[first,last)范围内最小元素的迭代器。std::max_element:返回指向[first,last)范围内最大元素的迭代器。std::minmax_element是否使用完整列表的排序来实现此目的?从std::minmax_element处理返回对的开销是否足够? 最佳答案 您不必担心std::minmax_element进行任何排序。它以遍历的

c++ - 减少冗长 : inserting elements into map

我最近在熟悉C++11,auto关键字很棒!打字:for(autobar:bars){太令人满意了。保持代码的可读性和美观。仍然感觉它停止了你所有的动力如下:foo.insert(std::pair("soVerbose",baz));//Asopposedtosimply:foo.insert("soVerbose",baz);它是这样的有充分的理由吗?有什么巧妙的方法可以让它不那么冗长吗?我知道[]运算符可用于将元素插入map,但功能略有不同。 最佳答案 使用emplace功能:#include#include#includei

c++ - Clangs C++ 模块 TS 支持 : How to tell clang++ where to find the module file?

在他的talk在CppCon上,RichardSmith提到尽管ModuleTS支持目前正在进行中,但它已经可以使用了。所以我从svn构建了clang4.0,并在一个非常简单的示例上进行了尝试。在我的myclass.cppm文件中,我为int定义了一个简单的包装器modulemyclass;exportclassMyClass{public:MyClass(inti):_i{i}{}intget(){return_i;}private:int_i;};和我的main.cpp只是创建该类的一个实例,并将其保存的int输出到std::cout。#include#includeimportm

c++ - 性能 std::strstr 与 std::string::find

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:C++string::findcomplexity最近我注意到函数std::string::find比函数std::strstr慢一个数量级-在我的GCC4.7环境中在Linux上。性能差异取决于字符串的长度和硬件架构。差异的原因似乎很简单:std::string::find基本上在循环中调用std::memcmp-具有时间复杂度O(m*n)。相比之下,std::strstr针对硬件架构进行了高度优化(例如使用SSE指令)并使用更复杂的字符串匹配算法(显然是Knuth-Morris-Pratt)。我也很惊讶没

c++ - 找不到 boost_process cmake find_package

我正在尝试将boost库导入我的C++项目,但出于某种原因它找不到Boost.Process,尽管它找到了其他库。我的CMakeLists.txt文件:cmake_minimum_required(VERSION3.9FATAL_ERROR)set(PROJECT_NAME"test-stuff"CXX)project(${PROJECT_NAME})set(Boost_USE_MULTITHREADEDON)find_package(Boost1.64.0REQUIREDsystemfilesystemprocess)if(Boost_FOUND)include_directorie