草庐IT

kkt条件

全部标签

c++ - 这个条件是如何解析的?

对于某些上下文,条件用于查找链表循环的普通类型算法:来自链接:http://vijayinterviewquestions.blogspot.com/2007/05/how-would-you-detect-loop-in-linked.htmlp=head;q=head->next;while(p!=NULL&&q!=NULL){if(p==q){//Loopdetected!exit(0);}p=p->next;q=(q->next)?(q->next->next):q->next;}//Noloop.行是什么:q=(q->next)?(q->next->next):q->next

c++ - 可以在 C++03 中有条件地声明友元类吗?

我只想在某些(编译时)条件为真时声明一个友元类。例如://pseudo-C++classFoo{if(some_compile_time_condition){friendclassBar;}};我在互联网上没有找到任何解决方案。我浏览了问题的所有答案GeneratingStructuresdynamicallyatcompiletime.他们中的许多人使用C++11std::conditional,但我想知道是否可以在C++03不使用预处理器的情况下执行此操作.此解决方案https://stackoverflow.com/a/11376710/252576将不起作用,因为friend

c++ - 条件运算符可以返回引用吗?

我遇到了一行代码,但从未想过它会运行良好。我认为条件运算符的返回值不适用于引用。一些伪代码:#includeusingnamespacestd;classA{public:A(intinput):v(input){};voidprint()const{cout谁能解释一下?谢谢。 最佳答案 您对条件运算符的假设是错误的。表达式的类型是表达式c.getA()和c.getB()具有的任何类型,如果它们具有相同的类型,并且如果它们表示左值,那么整个表达式也是如此。(具体规则在C++标准的§5.16中。)你甚至可以这样做:(conditio

c++ - 静态局部变量中的竞争条件

我目前正在阅读EffectiveC++。有一个关于使用静态局部变量的部分,它说如果多个线程访问一个静态变量,则在该变量的初始化期间可能会出现竞争条件。至少这是我的解释。这是真的?例如,在C#中,类静态变量的初始化永远不会出现竞争条件。例如,此代码在静态变量初始化期间是否存在竞争条件?FileSystem&tfs(){staticFileSystemfs;returnfs;}以下是书中的异常(exception)情况。Here'sthetechniqueappliedtobothtfsandtempDir:classFileSystem{...};//asbeforeFileSystem

c++ - 引用的条件分配

有比我对C++标准理解更深的人可以详细说明一下吗?这是我的示例程序#include#includeintmain(intargc,char*argv[]){conststd::stringmessage("helloworld");std::cout0)?message:"";std::cout在一台机器上它这样做:#g++--version&&g++str_test.cpp&&./a.outg++(Debian4.7.2-5)4.7.2Copyright(C)2012FreeSoftwareFoundation,Inc.Thisisfreesoftware;seethesourcef

c++ - 有没有办法有条件地为 C++ 范围循环选择不同的初始化列表?

我想重新排列这段代码:if(x_can_be_true){for(x:{false,true}){do_work(x);}}else{do_work(false);}所以do_work只被调用一次。从概念上讲,我想这样做:for(x:(x_can_be_true?{false,true}:{false})){do_work(x);}有什么建议可以真正编译该代码吗?编辑:do_work是现实世界问题的简化占位符。它有很多行代码,它们依赖于前面几行中的许多参数。该问题的目的是找到一种避免重复这么多行的模式。因为那不是好的编码习惯。;->我可以把它变成一个有很多参数的函数。或使用参数bloc

c++ - 如何根据命中的另一个断点添加条件中断?视觉C++

我有一堆经常使用的通用代码,我想深入研究这些代码以处理特定情况下的错误。所以我只想在遇到其他断点时中断一组断点。有没有办法在Visual2005中执行此操作?我正在使用C++代码。谢谢! 最佳答案 请记住,您可以禁用断点-仅禁用第二个断点可能更容易/更高效/更清洁(例如,然后将调试标志添加到您的代码并重新编译),等到第一个断点,然后启用第二个在你的断点窗口中-每次调试时只需点击两次鼠标......:) 关于c++-如何根据命中的另一个断点添加条件中断?视觉C++,我们在StackOver

c++ - 条件c++中对象的实例化

假设我想根据特定情况实例化不同类型的对象,所以我会在if语句的主体内实例化它们。问题是如果你想稍后使用那个对象,你需要在实例化之前声明它。如何声明一个通用对象。有没有类似于Java中对象类的东西?我已经进行了一些谷歌搜索,例如“通用对象C++”和“对象类C++”,但似乎没有类似的东西。 最佳答案 这个问题可以用接口(interface)来解决。现在,C++不知道接口(interface),但您可以轻松地使用抽象基类做类似的事情:classBase{...}classA:publicBase{...}//AisaBaseclassB:

c++ - 在 do...while 循环中使用多个条件

所以我正在制作一个程序,询问用户是否想做某事。答案就像是/否一样简单。我希望程序能够接受大写和小写的“Y”。问题是,当我键入while(answer=='Y',answer=='y')时,只接受小写的“Y”。如果我键入while(answer=='y',answer=='Y')我做错了什么?(更多信息:“answer”是我的“char”变量的名称,我正在使用“iostream”、“cstdlib”和“string”库) 最佳答案 您需要使用“逻辑或”运算符||所以你的代码会变成while(answer=='Y'||answer=='

C++ STL 映射 - 条件插入

我正在寻找一种执行条件插入的有效方法。理想情况下,我想要一个适用于任何map的模板函数。我想要这样的东西:std::mapMyMap;if(MyMap.ConditionalInsert(3,"Hello")){//therewasnoelement3,onehasbeenaddedwithvalue"Hello"}else{//therewasalreadyanelement3inthemap,it'sunchanged}我不能轻松地使用operator[]因为没有简单的方法来判断它是否创建了一个元素。我可以使用count进行测试,但是如果我们进行插入,我必须搜索map两次。我想使用