Questions tagged «c++»

C ++是一种通用编程语言。它最初被设计为C的扩展,并且具有类似的语法,但是现在它是一种完全不同的语言。使用此标记可解决有关将要使用C ++编译器编译的代码的问题。对于与特定标准修订版[C ++ 11],[C ++ 14],[C ++ 17]或[C ++ 20]等相关的问题,请使用特定于版本的标记。

7
哪个更有效:返回值与通过引用传递?
我目前正在研究如何编写有效的C ++代码,并且在函数调用方面,我想到了一个问题。比较此伪代码功能: not-void function-name () { do-something return value; } int main () { ... arg = function-name(); ... } 使用以下否则相同的伪代码函数: void function-name (not-void& arg) { do-something arg = value; } int main () { ... function-name(arg); ... } 哪个版本更有效,在哪个方面(时间,内存等)更有效?如果取决于,那么什么时候第一个会更有效率,什么时候第二个会更有效率? 编辑:就上下文而言,此问题仅限于与硬件平台无关的差异,并且大多数情况下也限于软件。是否存在与机器无关的性能差异? 编辑:我看不到这是重复的。另一个问题是比较按引用传递(上一个代码)与按值传递(下一个): not-void function-name (not-void arg) 这和我的问题不同。我的重点不是哪个是将参数传递给函数的更好方法。我关注的是这是更好的方式来传递出一个结果来自外部范围的变量。

11
何时重载逗号运算符?
我经常在SO上看到有关在C ++中重载逗号运算符的问题(主要与重载本身无关,但类似序列点的概念),这让我感到奇怪: 什么时候应该使逗号超载?其实际用途有哪些例子? 我只是想不出我已经看到或需要的任何例子,例如 foo, bar; 在现实世界的代码中,所以我很好奇它何时被使用。


10
C ++获取模板中的类型名称
我正在编写一些用于解析某些文本数据文件的模板类,因此很可能大部分解析错误是由于数据文件中的错误而引起的,这些错误大部分不是程序员编写的,因此需要关于应用为何无法加载的好消息,例如: 解析example.txt时出错。[MySectiom]键的值(“ notaninteger”)不是有效的int 我可以从传递给模板函数的参数以及类中的成员vars得出文件名,节名和键名,但是我不确定如何获取模板函数尝试转换为的类型的名称。 我当前的代码看起来像,只对纯字符串等进行了专门化处理: template<typename T> T GetValue(const std::wstring &section, const std::wstring &key) { std::map<std::wstring, std::wstring>::iterator it = map[section].find(key); if(it == map[section].end()) throw ItemDoesNotExist(file, section, key) else { try{return boost::lexical_cast<T>(it->second);} //needs to get the name from T somehow catch(...)throw ParseError(file, section, key, it->second, TypeName(T)); } } 宁可不必对数据文件可能使用的每种类型都进行特定的重载,因为它们有很多负载... 我还需要一个解决方案,除非出现异常,否则不会产生任何运行时开销,即我想要一个完全编译时的解决方案,因为此代码被称为“成千上万次”,并且加载时间已经有些长了。 编辑:好的,这是我想出的解决方案: …

14
在C ++中使用最小和最大函数
从C ++,是min和max优选超过fmin和fmax?为了比较两个整数,它们是否提供基本相同的功能? 您倾向于使用这些功能之一还是倾向于编写自己的功能(也许是为了提高效率,可移植性,灵活性等)? 笔记: C ++标准模板库(STL)在标准C ++算法标头中声明min和max函数。 C标准(C99)在标准C math.h标头中提供fminandfmax函数。 提前致谢!
76 c++  c  max  min 

6
如何在Visual Studio C ++中使用第三方DLL文件?
我了解我需要使用LoadLibrary()。但是,要使用第三方DLL文件,我还需要采取什么其他步骤? 我只是跳入C ++,这是我唯一不了解的部分(作为Java程序员)。我只是在研究如何使用Qt库和tesseract-ocr,但是该过程对我来说毫无意义,并且很难谷歌搜索。 如何告诉编译器我正在使用的功能?是否应该有第三方供应商提供的包含文件?

12
C ++有哪些参数解析器库?[关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow的主题。 6年前关闭。 改善这个问题 我想通过以下方式将参数传递给C ++程序: ./myprog --setting=value 有没有可以帮助我轻松完成此任务的库? 另请参见C和Unix的参数解析帮助器
76 c++  parsing  option 

11
C ++中的动态分派和后期绑定之间有什么区别?
我最近在Wikipedia上阅读了有关动态调度的内容,但无法理解C ++中动态调度和后期绑定之间的区别。 什么时候使用每种机制? 维基百科的确切报价: 动态分派不同于后期绑定(也称为动态绑定)。在选择操作的上下文中,绑定是指将名称与操作相关联的过程。调度是指在您决定名称所指的是哪个操作之后,为该操作选择一个实现。使用动态调度,可以在编译时将名称绑定到多态操作,但是直到运行时才选择实现(这是C ++中动态调度的工作方式)。但是,后期绑定确实意味着动态分派,因为在选择名称所指代的操作之前,您无法选择要选择的多态操作的实现。
76 c++  oop 

7
如何将整个流读入std :: string?
我正在尝试将整个流(多行)读入字符串。 我正在使用此代码,并且可以工作,但是却冒犯了我的风格感……当然,有一种更简单的方法吗?也许使用stringstreams? void Obj::loadFromStream(std::istream & stream) { std::string s; std::streampos p = stream.tellg(); // remember where we are stream.seekg(0, std::ios_base::end); // go to the end std::streamoff sz = stream.tellg() - p; // work out the size stream.seekg(p); // restore the position s.resize(sz); // resize the string stream.read(&s[0], sz); // and …
76 c++  string  stream 

4
map <int,int>默认值
std::map&lt;int,int&gt; mapy; ++mapy[5]; 可以安全地假设mapy[5]它将始终为1吗?我的意思是,mapy[5]即使在我的代码中未明确声明,也总是在“ ++”之前获得默认值0?

7
浮点除法与浮点乘法
通过编码是否可以获得(非微优化)性能提升 float f1 = 200f / 2 比较 float f2 = 200f * 0.5 我的一位教授几年前告诉我,浮点除法比浮点乘法要慢,但没有详细说明为什么。 此声明适用于现代PC体系结构吗? 更新1 关于评论,请同时考虑以下情况: float f1; float f2 = 2 float f3 = 3; for( i =0 ; i &lt; 1e8; i++) { f1 = (i * f2 + i / f3) * 0.5; //or divide …


3
C ++ 11“自动”语义
当我使用C ++ 11时auto,关于类型演绎将解析为值还是引用的规则是什么? 例如,有时很明显: auto i = v.begin(); // Copy, begin() returns an iterator by value 这些不太清楚: const std::shared_ptr&lt;Foo&gt;&amp; get_foo(); auto p = get_foo(); // Copy or reference? static std::shared_ptr&lt;Foo&gt; s_foo; auto sp = s_foo; // Copy or reference? std::vector&lt;std::shared_ptr&lt;Foo&gt;&gt; c; for (auto foo: c) { // Copy for every …
76 c++  c++11 

16
可视化代码流的工具(C / C ++)[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 您是否有任何工具可以简化了解C / C ++代码的任务?我们只是继承了由他人编写的大量软件,因此我们需要快速入门。关于可以简化此任务的工具的任何建议?
76 c++  c  code-analysis 


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.