Questions tagged «c++»

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


6
如何将unique_ptr参数传递给构造函数或函数?
我是C ++ 11中移动语义的新手,而且我不太清楚如何处理unique_ptr构造函数或函数中的参数。考虑此类本身的引用: #include <memory> class Base { public: typedef unique_ptr<Base> UPtr; Base(){} Base(Base::UPtr n):next(std::move(n)){} virtual ~Base(){} void setNext(Base::UPtr n) { next = std::move(n); } protected : Base::UPtr next; }; 这是我应该编写带有unique_ptr参数的函数的方式吗? 我需要std::move在调用代码中使用吗? Base::UPtr b1; Base::UPtr b2(new Base()); b1->setNext(b2); //should I write b1->setNext(std::move(b2)); instead?

16
静态链接与动态链接
在某些情况下,是否有任何令人信服的性能原因选择静态链接而不是动态链接?我已经听过或阅读了以下内容,但是我对这个主题的了解不足,无法保证其准确性。 1)静态链接和动态链接之间的运行时性能差异通常可以忽略不计。 2)(1)如果使用使用概要文件数据来优化程序热路径的性能分析编译器,则不正确,因为使用静态链接,编译器可以同时优化您的代码和库代码。使用动态链接只能优化您的代码。如果大部分时间都花在运行库代码上,那将有很大的不同。否则,(1)仍然适用。

4
何时在C ++中使用extern
我正在阅读“在C ++中思考”,它刚刚引入了extern声明。例如: extern int x; extern float y; 我想我理解了含义(没有定义的声明),但是我想知道它何时证明有用。 有人可以提供例子吗?

30
将'const'用于功能参数
你走多远const?您只是const在必要时制作函数,还是全力以赴,并在各处使用它?例如,假设有一个简单的变量,它带有一个布尔值: void SetValue(const bool b) { my_val_ = b; } 这const真的有用吗?我个人选择广泛使用它,包括参数,但是在这种情况下,我想知道它是否值得? 我也惊讶地发现您可以省略const函数声明中的参数,但可以将其包括在函数定义中,例如: .h文件 void func(int n, long l); .cpp文件 void func(const int n, const long l) 是否有一个原因?对我来说似乎有点不寻常。
396 c++  const 

12
在哪里可以找到最新的C或C ++标准文档?
这个问题的答案是社区的努力。编辑现有答案以改善此职位。它目前不接受新的答案或互动。 Наэтотвопросестьответына 堆栈溢出нарусском:ГдевзятьстандартC ++? 对于许多问题,答案似乎可以在“标准”中找到。但是,我们在哪里找到呢?最好在线。 有时,谷歌搜索有时会徒劳无功,特别是对于C标准,因为它们淹没在编程论坛上的讨论中。 首先,由于这些是我现在正在搜索的内容,因此在哪里有不错的在线资源: C89 C99 C11 C ++ 98 C ++ 03 C ++ 11 C ++ 14 C ++ 17
394 c++  c  standards  c++-faq 


7
C ++中线程的简单示例
这个问题的答案是社区的努力。编辑现有答案以改善此职位。它目前不接受新的答案或互动。 有人可以发布一个简单的示例来说明如何在C ++中启动两个(面向对象)线程。 我正在寻找可以扩展运行方法(或类似方法)的实际C ++线程对象,而不是调用C样式线程库。 我遗漏了所有特定于OS的请求,希望任何答复的人都可以使用跨平台库进行答复。我现在将其明确。

6
确定整数是否在具有已知值集的两个整数(包括两个整数)之间的最快方法
有没有比x >= start && x <= endC或C ++ 更快的方法来测试整数是否在两个整数之间? 更新:我的特定平台是iOS。这是框模糊功能的一部分,该功能将像素限制为给定正方形中的圆形。 更新:尝试了可接受的答案后,我在一行代码上以正常x >= start && x <= end方式完成了一个数量级的加速。 更新:这是来自XCode的汇编程序的前后代码: 新方法 // diff = (end - start) + 1 #define POINT_IN_RANGE_AND_INCREMENT(p, range) ((p++ - range.start) < range.diff) Ltmp1313: ldr r0, [sp, #176] @ 4-byte Reload ldr r1, [sp, #164] @ 4-byte Reload …
389 c++  c  performance  math 

10
漂亮的C ++ STL容器
请注意这篇文章末尾的更新。 更新:我已经在GitHub上为此库创建了一个公共项目! 我希望有一个模板,该模板一劳永逸地负责通过漂亮地打印所有STL容器operator<<。用伪代码,我正在寻找这样的东西: template<container C, class T, String delim = ", ", String open = "[", String close = "]"> std::ostream & operator<<(std::ostream & o, const C<T> & x) { o << open; // for (typename C::const_iterator i = x.begin(); i != x.end(); i++) /* Old-school */ for (auto i …


9
什么是std :: promise?
我相当熟悉C ++ 11分的std::thread,std::async和std::future部件(例如见这个答案),这是直接的。 但是,我不太了解std::promise它的用途,作用以及在什么情况下最好使用它。标准文档本身不包含除类概述之外的大量信息,而且::: thread也不包含。 有人可以举一个简短,简洁的例子来说明这种情况的std::promise需要,它是最惯用的解决方案?

10
如何检测圣诞树?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 去年关闭。 可以使用哪些图像处理技术来实现检测以下图像中显示的圣诞树的应用程序? 我正在寻找可以在所有这些图像上使用的解决方案。因此,需要训练haar级联分类器或模板匹配的方法不是很有趣。 我正在寻找可以使用任何编程语言编写的东西,只要它仅使用开源技术即可。该解决方案必须使用此问题上共享的图像进行测试。有6个输入图像,答案应显示每个图像的处理结果。最后,对于每个输出图像,必须绘制红线以包围检测到的树。 您将如何以编程方式检测这些图像中的树木?

16
何时使用引用与指针
我了解指针与引用的语法和一般语义,但是我应该如何确定何时在API中使用引用或指针多少合适? 自然,有些情况需要一个或另一个(operator++需要一个引用参数),但是总的来说,我发现我更喜欢使用指针(和const指针),因为语法很清楚地表明,变量是以破坏性方式传递的。 例如下面的代码: void add_one(int& n) { n += 1; } void add_one(int* const n) { *n += 1; } int main() { int a = 0; add_one(a); // Not clear that a may be modified add_one(&a); // 'a' is clearly being passed destructively } 使用指针,总是(更)明显的是怎么回事,所以对于API和诸如此类的情况,其中最关注清晰度的指针不是比引用更合适吗?这是否意味着仅在必要时才使用引用(例如operator++)?两者之间是否存在性能问题? 编辑(已过时): 除了允许使用NULL值和处理原始数组外,选择还取决于个人喜好。我接受了下面引用Google的C ++样式指南的答案,因为他们提出的观点是“引用可能会造成混淆,因为引用具有值语法但具有指针语义。” 由于清理不应该为NULL的指针参数需要进行额外的工作(例如,add_one(0)将在运行时调用指针版本并在运行时中断),因此从可维护性的角度来看,使用必须在存在对象的引用是有意义的,尽管这很遗憾。失去语法清晰度。
381 c++  pointers  reference 


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.