草庐IT

if-else-statement

全部标签

C++ STL 堆栈问题 : Why does pop() not throw an exception if the stack is empty?

如果堆栈为空且没有可弹出的内容,为什么std::stack::pop()不抛出异常?(我正在为我自己的代码设计一个专门的堆栈,并且想知道这种方法(需要手动检查堆栈是否为空)与抛出异常之间的权衡。我的猜测是,尽管C++支持异常处理,但它的运行时开销很小,因此,为了获得最佳性能,决定不在std::stack::pop中抛出异常)。 最佳答案 我认为pop()不必抛出异常的原因与效率或性能无关,而是与异常有关。正如所争论的elsewhere:SGIexplanation:http://www.sgi.com/tech/stl/stack.

c++ - Visual Studio 2013 C++ 概述/折叠 if/else/while 代码区域

显然在VS13中,他们删除了Option->TextEditor->C++->Formatting中的大纲部分。在VS2013C++中有没有办法折叠if/while/etc语句?我知道C#插件并且已经知道了,但我正在寻找C++环境的解决方案。干杯! 最佳答案 汉斯·帕桑特回答:“它还在,文本编辑器->C++->View,大纲语句block” 关于c++-VisualStudio2013C++概述/折叠if/else/while代码区域,我们在StackOverflow上找到一个类似的问题

c++ - Visual Studio 2013 C++ 概述/折叠 if/else/while 代码区域

显然在VS13中,他们删除了Option->TextEditor->C++->Formatting中的大纲部分。在VS2013C++中有没有办法折叠if/while/etc语句?我知道C#插件并且已经知道了,但我正在寻找C++环境的解决方案。干杯! 最佳答案 汉斯·帕桑特回答:“它还在,文本编辑器->C++->View,大纲语句block” 关于c++-VisualStudio2013C++概述/折叠if/else/while代码区域,我们在StackOverflow上找到一个类似的问题

c++ - 当 X 未定义时,为什么没有 "#if X"警告?

我偶尔会写这样的代码://file1.cpp#defineDO_THIS1#ifDO_THIS//stuff#endif在代码开发过程中,我可能会在0和1之间切换DO_THIS的定义。最近我不得不重新排列我的源代码并将一些代码从一个文件复制到另一个文件。但是我发现我犯了一个错误,两个部分像这样分开了://file1.cpp#defineDO_THIS1和//file2.cpp#ifDO_THIS//stuff#endif显然我修复了错误,但后来我想,为什么编译器没有警告我?我将警告级别设置为4。为什么在未定义X时#ifX不可疑?还有一个问题:是否有任何系统的方法可以找出我是否在其他地方

c++ - 当 X 未定义时,为什么没有 "#if X"警告?

我偶尔会写这样的代码://file1.cpp#defineDO_THIS1#ifDO_THIS//stuff#endif在代码开发过程中,我可能会在0和1之间切换DO_THIS的定义。最近我不得不重新排列我的源代码并将一些代码从一个文件复制到另一个文件。但是我发现我犯了一个错误,两个部分像这样分开了://file1.cpp#defineDO_THIS1和//file2.cpp#ifDO_THIS//stuff#endif显然我修复了错误,但后来我想,为什么编译器没有警告我?我将警告级别设置为4。为什么在未定义X时#ifX不可疑?还有一个问题:是否有任何系统的方法可以找出我是否在其他地方

c++ - 使用之前在 if 语句中定义的变量

intmain(){if(i=0){myclass1a="Example1";}else{myclass2a="Example2";}cout我知道一种方法是在block之外定义它,但是如果我在检查i的条件之前还没有确定a的类型怎么办? 最佳答案 如果您能够使用c++17您可以使用std::variant或std::any如果您的类型没有公共(public)基类。这些类是任何或指定类型的类型安全容器。std::variant的示例如下:#include#include#includeintmain(){boolinput=false

c++ - 使用之前在 if 语句中定义的变量

intmain(){if(i=0){myclass1a="Example1";}else{myclass2a="Example2";}cout我知道一种方法是在block之外定义它,但是如果我在检查i的条件之前还没有确定a的类型怎么办? 最佳答案 如果您能够使用c++17您可以使用std::variant或std::any如果您的类型没有公共(public)基类。这些类是任何或指定类型的类型安全容器。std::variant的示例如下:#include#include#includeintmain(){boolinput=false

c++ - static const std::map<string, int> vs if-elseif

我编写了一个将字符串转换为数字的函数。我看到了两种可能的写法:intconvert(conststd::stringinput){if(input=="one"){return1;}elseif(input=="two"){return2;}//etc.return0;}或者intconvert(conststd::stringinput){staticconstmaptable={{"one",1},{"two",2}//etc.}constautoresult=table.find(input);if(result==table.end()){return0;}returnresu

c++ - static const std::map<string, int> vs if-elseif

我编写了一个将字符串转换为数字的函数。我看到了两种可能的写法:intconvert(conststd::stringinput){if(input=="one"){return1;}elseif(input=="two"){return2;}//etc.return0;}或者intconvert(conststd::stringinput){staticconstmaptable={{"one",1},{"two",2}//etc.}constautoresult=table.find(input);if(result==table.end()){return0;}returnresu

c++ - 'if' 带有模板参数或 SFINAE 是首选?

首选是这样的:templateboolisNotZero(constT&a){if(std::is_floating_point::value)returnabs(a)>std::numeric_limits::epsilon();elsereturna;}或者这个:?templatestd::enable_if::value,bool>::typeisNotZero(constT&a){returnabs(a)>std::numeric_limits::epsilon();}templatestd::enable_if::value,bool>::typeisNotZero(cons