Questions tagged «c++»

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

8
初始化二维std :: vector
因此,我有以下内容: std::vector< std::vector <int> > fog; 我非常天真地初始化它,例如: for(int i=0; i<A_NUMBER; i++) { std::vector <int> fogRow; for(int j=0; j<OTHER_NUMBER; j++) { fogRow.push_back( 0 ); } fog.push_back(fogRow); } 感觉很不对劲...还有另一种初始化向量的方法吗?
116 c++  vector 

3
C ++返回对局部变量的引用
如果以下代码(func1())必须返回i,是否正确?我记得在某处读过,返回对局部变量的引用时出现问题。与func2()有何不同? int& func1() { int i; i = 1; return i; } int* func2() { int* p; p = new int; *p = 1; return p; }
116 c++ 


25
Boost的最常用零件
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 当我发现boost::lexical_cast自己时,心想:“为什么我不早知道呢!” -我讨厌像这样写代码 stringstream ss; ss << anIntVal; mystring = ss.str(); 现在我写 mystring = boost::lexical_cast<string>(anIntVal); 昨天,在stackoverflow上,我遇到了boost split(另一个可以节省我编写代码的宝石)。 string stringtobesplit = "AA/BB-CC") vector<string> tokens; boost::split(tokens, stringtobesplit, boost::is_any_of("/-")); // tokens now holds 3 items: AA BB CC 我将开始浏览boost文档,寻找可以经常使用的其他功能,但是我觉得很容易错过一些东西。 您最常使用/什么讨厌的增强功能?
115 c++  boost 

4
如何重载std :: swap()
std::swap()在排序甚至分配期间,许多std容器(例如std::list和std::vector)都使用它。 但是std的实现swap()非常笼统,对于自定义类型而言效率很低。 因此,可以通过std::swap()使用自定义类型特定的实现进行重载来获得效率。但是如何实现它,以便将其用于std容器?


4
在C ++中,如果throw是一个表达式,它的类型是什么?
我在进行Reddit的简短尝试之一时就选择了此功能: http://www.smallshire.org.uk/sufficientlysmall/2009/07/31/in-c-throw-is-an-expression/ 基本上,作者指出在C ++中: throw "error" 是一个表达。实际上,C ++标准在正文和语法中都清楚地阐明了这一点。但是,(至少对我而言)不清楚什么是表达式的类型?我猜到了“ void”,但是尝试使用g ++ 4.4.0和Comeau产生了以下代码: void f() { } struct S {}; int main() { int x = 1; const char * p1 = x == 1 ? "foo" : throw S(); // 1 const char * p2 = x == 1 ? "foo" …
115 c++  throw 


9
在C ++和C中将'const int'与'int const'作为函数参数
考虑: int testfunc1 (const int a) { return a; } int testfunc2 (int const a) { return a; } 这两个功能在各个方面都是相同的还是有所不同? 我对C语言的答案很感兴趣,但是如果C ++语言中有一些有趣的东西,我也想知道。
115 c++  c  const 

17
C ++-传递对std :: shared_ptr或boost :: shared_ptr的引用
如果我有一个需要使用的函数shared_ptr,将其传递给它引用不是更有效(这样可以避免复制shared_ptr对象)?可能的不良副作用是什么?我设想了两种可能的情况: 1)在函数内部复制参数,例如 ClassA::take_copy_of_sp(boost::shared_ptr<foo> &sp) { ... m_sp_member=sp; //This will copy the object, incrementing refcount ... } 2)在函数内部仅使用参数,例如 Class::only_work_with_sp(boost::shared_ptr<foo> &sp) //Again, no copy here { ... sp->do_something(); ... } 在两种情况下,我都看不出有理由boost::shared_ptr<foo>按值传递而不是按引用传递。传递值只会由于复制而“临时”增加引用计数,然后在退出功能范围时减少引用计数。我在俯视什么吗? 为了澄清,在阅读了几个答案之后:我完全同意过早优化的问题,并且我总是尝试先介绍热点,然后再进行热点工作。如果您知道我的意思,我的问题更多是从纯粹的技术代码角度来看。


4
如何从预处理器宏中识别平台/编译器?
我正在编写一个跨平台的代码,应该在linux,windows,Mac OS上编译。在Windows上,我必须支持Visual Studio和mingw。 有一些特定于平台的代码,应该放在#ifdef .. #endif环境中。例如,在这里我放置了win32特定的代码: #ifdef WIN32 #include <windows.h> #endif 但是如何识别linux和mac OS?我应该使用什么定义名称(或其他名称)?


6
C / C ++程序的最大堆栈大小
我想在100 X 100的阵列上做DFS。(数组的表示元素代表图形节点)因此,假设情况最糟,递归函数调用的深度可能会达到10000,而每次调用最多会占用20个字节。那么可行的方法是否有可能发生堆栈溢出? C / C ++中的最大堆栈大小是多少? 请同时为以下两者指定gcc: 1)Windows上的cygwin 2)Unix 一般限制是什么?
115 c++  c  stack 

12
手工编码的GUI与Qt Designer的GUI [关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 2年前关闭。 改善这个问题 我花这些假期学习编写Qt应用程序。几个小时前,我正在阅读有关Qt Designer的文章,这使我感到奇怪:用Qt编写现实世界应用程序的人会使用什么来设计其GUI?实际上,人们通常如何设计GUI? 我发现,尽管对于复杂的GUI设计器来说,手工编写代码在概念上比使用Qt Designer更简单。使用Designer可以使用大型GUI,但是随着时间的推移,随着复杂性的增加,它们可能变得非常难以管理(这只是我的看法)。我还下载了AmaroK源代码以窥探这些家伙在做什么,并发现了许多对addWidget()和朋友的调用,但是没有一个由Designer创建的XML文件(除了:AmaroK一直是我最喜欢的应用程序)任何平台)。 那么,创建GUI的“正确”方法是什么?设计者还是代码?在此讨论中,让我们考虑以下类型的GUI: 只需要输入的简单对话框即可显示一些结果并退出。假设有一个使用YouTube URL并将视频下载到用户硬盘的应用程序。新手可能会开始使用的那种应用程序。 中级GUI,例如带有几个工具栏/菜单项的便笺编辑器。让我们以xPad为例(http://getxpad.com/)。我会说大多数应用程序都属于“实用程序”类别。 非常复杂的GUI,例如AmaroK或OpenOffice。当您看到它们时,您就知道它们,因为它们会使您的眼睛流血。

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.