Questions tagged «c++»

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

7
如何根据对的第二个元素对向量进行排序?
如果我有一对向量: std::vector<std::pair<int, int> > vec; 有没有一种简单的方法可以基于该对的第二个元素按升序对列表进行排序? 我知道我可以编写一个可以完成工作的小函数对象,但是有没有办法使用STL的现有部分并std::less直接进行工作呢? 编辑:我了解我可以编写一个单独的函数或类以传递给第三个参数进行排序。问题是我是否可以用标准的东西建造它。我真的看起来像这样: std::sort(vec.begin(), vec.end(), std::something_magic<int, int, std::less>());
133 c++  stl  stdvector 


12
使用cout打印正确的小数点数
我有一个float值列表,我想cout用2个小数位打印它们。 例如: 10.900 should be printed as 10.90 1.000 should be printed as 1.00 122.345 should be printed as 122.34 我怎样才能做到这一点? (setprecision似乎对此没有帮助。)
133 c++ 

4
应该如何使用std :: optional?
我正在阅读有关的文档 std::experimental::optional并且对它的功能有很好的了解,但是我不知道何时应该使用它或应该如何使用它。该站点目前尚未包含任何示例,这使我更难理解该对象的真实概念。何时使用是std::optional一个不错的选择,它如何弥补以前的标准(C ++ 11)中没有的内容。


18
现代C ++越来越流行吗?[关闭]
从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 当我6到7年前第一次学习C ++时,我基本上学到的是“带类的C”。std::vector绝对是一个高级主题,如果您真的想的话,可以学到一些东西。当然,没有人告诉我可以利用析构函数来帮助管理内存。今天,在我所看到的所有地方,我都能看到RAII和SFINAE,STL和Boost,以及现代C ++。即使是刚开始使用该语言的人,几乎从第一天开始就已经学会了这些概念。 我的问题是,这仅仅是因为我只看到“最佳”问题,也就是在SO以及倾向于吸引初学者的其他编程网站(gamedev.net)上出现的问题,或者这实际上代表了整个C ++社区? 现代C ++真的成为默认语言吗?与其成为专家们写的花哨的东西,不如成为“ C ++的方式”?还是我只是无法看到成千上万的人仍在学习“带类的C”并编写自己的动态数组而不是使用std::vector,而是通过从顶层代码中手动调用new / delete来进行内存管理? 我想相信的话,如果整个C ++社区在短短几年内发展如此之大,这似乎是不可思议的。您的经历和印象如何? (免责声明:不熟悉C ++的人可能会误以为标题是询问C ++与其他语言相比是否正在流行。这不是我的问题。“现代C ++”是C ++中方言或编程风格的通用名称,以“ 现代C ++设计: “ 应用了通用编程和设计模式 ”,而我对这和“旧C ++”完全感兴趣。因此,无需告诉我C ++的时代已经过去,我们都应该使用Python;))
132 c++ 

6
C ++:为什么bool长8位?
在C ++中,我想知道为什么布尔类型是8位长(在我的系统上),其中只有一位足以容纳布尔值? 我曾经认为这是出于性能方面的考虑,但是在32位或64位机器上(寄存器为32或64位宽),性能优势是什么? 还是仅仅是这些“历史性”原因之一?
132 c++  boolean  size 

25
为什么有人会在C ++上使用C?[关闭]
从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 尽管人们似乎喜欢抱怨 C ++,但是我仍然找不到很多证据来证明为什么您会选择C而不是C ++。C似乎并没有那么强大,如果C ++遇到所有这些问题,为什么不将自己局限于C子集呢?您的想法/经验是什么?
132 c++  c 


1
-std = c ++ 11和-std = gnu ++ 11有什么区别?
gcc和clang -std=c++11和-std=gnu++11as作为编译参数有什么区别?与c99和有相同的问题gnu99吗?我了解C ++和C标准,这是我感兴趣的参数差异。 我在某处读到它与某些扩展有关,但是对于一个新项目,我不清楚哪个扩展以及如何在一个或另一个之间进行选择。
132 c++  gcc  c++11  clang 

10
为什么C和C ++编译器从不强制执行函数签名中的数组长度?
这是我在学习期间发现的: #include<iostream> using namespace std; int dis(char a[1]) { int length = strlen(a); char c = a[2]; return length; } int main() { char b[4] = "abc"; int c = dis(b); cout << c; return 0; } 因此,在变量中int dis(char a[1]),[1]似乎无法执行任何操作,并且根本不起作用 ,因为我可以使用a[2]。就像int a[]还是char *a。我知道数组名称是一个指针以及如何传达一个数组,所以我的难题与这部分无关。 我想知道的是为什么编译器允许这种行为(int a[1])。还是还有我不知道的其他含义?
131 c++  c  arrays 

11
main()真的是C ++程序的开始吗?
C ++ Standard的$ 3.6.1 / 1部分内容如下: 程序应包含一个称为main的全局函数,这是程序的指定开始。 现在考虑这段代码, int square(int i) { return i*i; } int user_main() { for ( int i = 0 ; i < 10 ; ++i ) std::cout << square(i) << endl; return 0; } int main_ret= user_main(); int main() { return main_ret; } 此示例代码执行了我打算执行的操作,即在进入main()应该作为程序“开始” 的函数之前,打印从0到9的整数平方。 …

4
如何在命名空间std中转发声明模板类?
#ifndef __TEST__ #define __TEST__ namespace std { template<typename T> class list; } template<typename T> void Pop(std::list<T> * l) { while(!l->empty()) l->pop(); } #endif 并在我的主体中使用了该功能。我得到错误。当然,我知道还有更多的模板参数std::list(我认为分配器)。但是,这是没有意义的。我是否必须知道模板类的完整模板声明才能进行声明? 编辑:我以前没有使用过指针-这是一个参考。我将使用指针进行尝试。
131 c++  templates  g++ 



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.