草庐IT

find_end

全部标签

c++ - 当调用带有警告 "control reaches end of non-void function"的函数时,会发生什么(实际上)?

我知道这条消息的含义,我只是想知道为什么它不是错误消息,而只是警告?在这种情况下会发生什么?例如,假设我有一个函数intf(){}当我调用它时会发生什么?在这种情况下,编译器是否添加了“未初始化”int的返回?或者缺少返回可能会导致堆栈损坏?或者它(绝对)未定义的行为?用gcc4.1.2和4.4.3测试编辑:阅读答案我明白一件事,阅读评论-另一件事..好的,让我们总结一下:这是未定义的行为。那么,这意味着可能导致堆栈损坏,对吗?(这甚至意味着,我的电脑可能开始通过麦克风插孔向我扔烂番茄,尖叫着——“你做了什么???”)。但如果是这样,那么为什么这里的最高答案说,堆栈损坏不会发生,同时行

c++ - 杀死魔数(Magic Number): "const int" vs "constexpr int" (or is there no difference in the end)

假设我有一个魔数(MagicNumber)我想摆脱...//whatever.cppfor(inti=0;i我可以通过两种方式杀死它:无论是constintSOMETHING_SOMETHING_MEANING_OF_LIFE=42或使用constexprintSOMETHING_SOMETHING_MEANING_OF_LIFE=42在源.cpp文件中。在这种情况下,两者之间是否有任何有意义的区别(我记得编译器推断-在任何一种情况下-值都不会改变,因此42实际上在结果循环中是硬编码的/展开循环/任何机器代码)还是归结为个人喜好?在一个相关问题中:如果magicnumber(以及替换它

c++ - 普通数组上的 std::lower_bound 和 std::find

我喜欢在普通数组上尽可能使用std::algorithm。现在我有2个疑问;假设我想使用std::lower_bound如果找不到我作为参数提供的值会怎样?inta[]={1,2,3,4,5,6};int*f=std::lower_bound(a,a+6,20);我打印*f时的结果是20。如果我使用std::find,也会发生同样的情况。inta[]={1,2,3,4,5,6};int*f=std::find(a,a+6,20);我打印*f时的结果是20。返回值是否总是原始参数什么时候找不到?在性能方面,std::lower_bound比std::find表现更好,因为它实现了二进制搜

c++ - 未取消引用的迭代器是否超过了数组未定义行为的 "one past-the-end"迭代器?

给定intfoo[]={0,1,2,3};我想知道指向“过去的最后一个”的迭代器是否无效。例如:autobar=cend(foo)+1;在Stack溢出问题中有大量提示和警告称这是“未定义的行为”,例如:c++what'stheresultofiterator+integerwhenpast-end-iterator?不幸的是,唯一的来源是挥手。我在购买时遇到了越来越多的麻烦,例如:int*bar;未初始化,但肯定不会调用未定义的行为,并且经过足够的尝试,我确信我可以找到一个实例,其中未初始化bar中的值与cend(foo)+1具有相同的值.这里最大的困惑之一是我不是询问解除引用cen

c++ - STL find 的性能优于手工循环

我有一些问题。给定以下C++代码片段:#include#include#include#include#includestructincrementor{incrementor():curr_(){}unsignedintoperator()(){returncurr_++;}private:unsignedintcurr_;};templatecharconst*value_found(Vecconst&v,typenameVec::const_iteratori){returni==v.end()?"no":"yes";}templatetypenameVec::const_ite

c++ - &*vector::end() 是未定义的行为吗?

我认为&*vector::end()是未定义的行为...直到我看到somepost引用Stroustrup'scode:voidvector_pointer_test(element_t*first,element_t*last,intnumber_of_times){vectorcontainer(first,last);//&*container.begin()getsusapointertothefirstelementsort(&*container.begin(),&*container.end());unique(&*container.begin(),&*containe

c++ - 我使用 C++ 标准库的 find 有什么问题?

我正在尝试像这样使用C++标准库的find算法:templateconstunsignedintAdjacencyList::_index_for_node(conststd::vector&list,constT&node)throw(NoSuchNodeException){std::vector::iteratoriter=std::find(list.begin(),list.end(),node);}当我尝试编译时,出现以下错误:Infileincludedfrom../AdjacencyList.cpp:8:../AdjacencyList.h:Inmemberfuncti

c++ - 检查字符串是否以另一个字符串 : find or compare? 开头

如果您想知道一个字符串是否以另一个字符串开头,您将如何在C++/STL中做到这一点?Java中有String.startsWith,Python也有string.startwith,STL没有直接的方法。相反,有std::string::find和std::string::compare。直到现在我都使用了这两种方法,主要取决于我现在的心情:if(str1.compare(0,str2.length(),str2)==0)do_something();if(str1.find(str2)==0)do_something();当然,你也可以做到str.substr(0,str2.leng

c++ - CMake FIND_PACKAGE 成功但返回错误的路径

我正在尝试使用我的CMakeLists.txt中的以下代码将CMake2.8.6链接到boost::program_optionsFIND_PACKAGE(BoostCOMPONENTSprogram_optionsREQUIRED)INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIR})ADD_EXECUTABLE(segmentsegment.cpp)TARGET_LINK_LIBRARIES(segment${Boost_LIBRARIES})find命令似乎成功,但将错误的目录传递给链接器。包实际上在:`/usr/lib64/libboost_prog

Mongodb find 查询与 $near 和坐标不起作用

我正在尝试使用mongodb中的一些地理定位功能。使用带有$near的查找查询似乎不起作用!我的数据库中目前有这个对象:{"Username":"Deano","_id":{"$oid":"533f0b722ad3a8d39b6213c3"},"location":{"type":"Point","coordinates":[51.50998,-0.1337]}}我也设置了以下索引:{"v":1,"key":{"location":"2dsphere"},"ns":"heroku_app23672911.catchmerequests","name":"location_2dspher