Questions tagged «c++»

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

5
启用彻底和详细的g ++警告的标志
通常在C下gcc,我将从以下警告标志集开始(从多个来源痛苦地组合起来): -Wall -Wextra -Wformat-nonliteral -Wcast-align -Wpointer-arith -Wbad-function-cast \ -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -Winline -Wundef \ -Wnested-externs -Wcast-qual -Wshadow -Wwrite-strings -Wno-unused-parameter \ -Wfloat-equal -pedantic -ansi 我将使用这组警告构建(至少是我的调试版本),并修复所有可能的内容(通常是所有内容),然后仅在不相关或不可修复的标记时才将其删除(几乎永远不会这样)。有时,-Werror如果在编译时必须离开,我也会添加。 我只是在学习C ++(是的,我落后时代15年),我想从右脚开始。 我的问题是:是否有人在下面为C ++预编译了一组类似的完整警告标志g++?(我知道其中许多都一样。)
122 c++  g++  warnings 


11
使用C ++ Boost库有什么优势?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 因此,我一直在阅读,看来Boost库在实践中得到了很多使用(尽管不是在我的商店里)。为什么是这样?是什么让它如此美妙?
122 c++  boost 

3
polymorphic_allocator:我什么时候以及为什么要使用它?
这是有关cppreference的文档,这是工作草案。 我必须承认,我不了解其真正目的是什么polymorphic_allocator以及何时/为什么/如何使用它。 例如,pmr::vector具有以下签名: namespace pmr { template <class T> using vector = std::vector<T, polymorphic_allocator<T>>; } 什么是polymorphic_allocator要约?std::pmr::vector老式的报价又是什么std::vector?到现在为止我还不能做什么? 该分配器的真正目的是什么,我什么时候应该实际使用它?
122 c++  allocator  c++17 

3
是否使用if(0)跳过应该起作用的开关中的情况?
我有一种情况,我希望C ++ switch语句中的两种情况都落入第三种情况。具体而言,第二种情况将落入第三种情况,并且第一种情况也将落入第三种情况而不会通过第二种情况。 我有一个愚蠢的想法,尝试了一下,就成功了!我把第二个盒子包裹在一个if (0) {...中}。看起来像这样: #ifdef __cplusplus # include <cstdio> #else # include <stdio.h> #endif int main(void) { for (int i = 0; i < 3; i++) { printf("%d: ", i); switch (i) { case 0: putchar('a'); // @fallthrough@ if (0) { // fall past all of case 1 …

8
Qt Creator-项目错误:Xcode设置不正确。您可能需要通过运行/ usr / bin / xcodebuild来确认许可协议
我刚刚安装了Qt 5.5,并在OS X上第一次使用Qt Creator。当我第一次安装Qt时,它给我一个错误消息“未安装Xcode 5”,我认为这很奇怪,(我有Xcode 7 beta) ,但安装仍然成功完成。 现在,当我启动或打开项目时,出现错误: 项目错误:Xcode设置不正确。您可能需要通过运行/ usr / bin / xcodebuild来确认许可协议。 /usr/bin/xcodebuild在终端中运行时,得到以下信息: xcode-select:错误:工具'xcodebuild'需要Xcode,但是活动的开发人员目录'/ Library / Developer / CommandLineTools'是命令行工具实例 我不确定Xcode与Qt Creator有什么关系,除非它与访问库具有跨平台兼容性有关,但是有没有办法解决此问题?
121 c++  xcode  macos  qt  qt-creator 

3
有哪些C ++智能指针实现?
比较,优点,缺点以及何时使用? 这是从垃圾回收线程中衍生出来的中,我认为这是一个简单的答案,它生成了一些有关某些特定智能指针实现的评论,因此似乎值得开始新文章。 最终的问题是,C ++中智能指针的各种实现方式是什么,它们如何进行比较?只是简单的利弊或异常,否则您可能会认为应该起作用。 我已经发布了一些我已经使用或至少被掩盖并考虑使用的实现作为以下答案,并且我了解它们的差异和相似性可能不是100%准确的,因此可以根据需要随时进行事实检查或纠正。 目的是学习一些新的对象和库,或者更正我的用法以及对已经广泛使用的现有实现的理解,并最终为其他人提供不错的参考。

13
在O(n)时间和O(1)空间中查找重复项
输入:给定n个元素组成的数组,其中包含从0到n-1的元素,这些数字中的任何一个都出现多次。 目标:在O(n)中查找这些重复数字,并且仅使用恒定的存储空间。 例如,假设n为7,数组为{1、2、3、1、3、0、6},答案应该为1和3。我在这里检查了类似的问题,但答案使用了诸如HashSetetc之类的一些数据结构。 有没有相同的有效算法?
121 c++  c  algorithm 

23
什么是教育工具能够证明人们在C / C ++中所做的不必要的假设?
我想为SO准备一些教育工具,该工具应帮助初学者(和中级)程序员认识和挑战C,C ++及其平台中的不必要假设。 例子: “整数环绕” “每个人都有ASCII” “我可以将函数指针存储在void *中” 我认为一个小的测试程序可以在各种平台上运行,这些平台运行“合理”的假设,这些假设是根据我们在SO方面的经验,通常由许多没有经验/半经验的主流开发人员做出的,并记录了它们在不同机器上的破坏方式。 这样做的目的不是要证明做某事是“安全的”(这是不可能做到的,测试如果失败就只能证明任何事情),而是向即使是最不懂事的人也演示最不起眼的表情如果其他计算机具有未定义或实现定义的行为,则在另一台计算机上中断。。 为此,我想问你: 如何改善这个想法? 哪些测试将是好的,它们应该是什么样? 您是否可以在可以使用的平台上运行测试并发布结果,以便最终获得平台数据库,它们之间的差异以及为何允许这种差异? 这是测试玩具的当前版本: #include <stdio.h> #include <limits.h> #include <stdlib.h> #include <stddef.h> int count=0; int total=0; void expect(const char *info, const char *expr) { printf("..%s\n but '%s' is false.\n",info,expr); fflush(stdout); count++; } #define EXPECT(INFO,EXPR) if (total++,!(EXPR)) expect(INFO,#EXPR) /* stack check..How …

2
为什么#include <string>在这里防止堆栈溢出错误?
这是我的示例代码: #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; class MyClass { string figName; public: MyClass(const string&amp; s) { figName = s; } const string&amp; getName() const { return figName; } }; ostream&amp; operator&lt;&lt;(ostream&amp; ausgabe, const MyClass&amp; f) { ausgabe &lt;&lt; f.getName(); return ausgabe; } int main() { MyClass f1("Hello"); cout …

11
为什么链表使用指针而不是将节点存储在节点内部
之前,我在Java中广泛使用链表,但是我对C ++还是很陌生。我正在使用这个在项目中提供给我的节点类 class Node { public: Node(int data); int m_data; Node *m_next; }; 但是我有一个问题回答得不是很好。为什么有必要使用 Node *m_next; 指向列表中的下一个节点,而不是 Node m_next; 我了解使用指针版本更好。我不会争辩事实,但是我不知道为什么会更好。关于指针如何更好地进行内存分配,我没有一个明确的答案,我想知道这里是否有人可以帮助我更好地理解这一点。


18
如何在C ++中计算代码段的执行时间
我必须以秒为单位计算C ++代码段的执行时间。它必须在Windows或Unix机器上都能工作。 我使用以下代码执行此操作。(之前导入) clock_t startTime = clock(); // some code here // to compute its execution duration in runtime cout &lt;&lt; double( clock() - startTime ) / (double)CLOCKS_PER_SEC&lt;&lt; " seconds." &lt;&lt; endl; 但是,对于较小的输入或简短的语句(例如a = a + 1),我得到的结果为“ 0秒”。我认为它一定是大约0.0000001秒或类似的东西。 我记得System.nanoTime()在这种情况下,在Java中效果很好。但是我不能从clock()C ++的功能中获得相同的确切功能。 你有解决方案吗?
121 c++  benchmarking 

4
fpermissive标志的作用是什么?
我只是想知道该-fpermissive标志在g ++编译器中的作用是什么?我正进入(状态: 错误:使用临时地址[-fpermissive] 我可以通过将-fpermissive标志提供给编译器来解决 。 编辑:我只是找到了导致临时地址错误部分的原因!我现在要修复该部分。

2
C ++从1字符转换为字符串?[关闭]
这个问题不太可能对将来的访客有所帮助;它仅与较小的地理区域,特定的时间段或极为狭窄的情况(通常不适用于Internet的全球受众)有关。要获得使该问题更广泛适用的帮助,请访问帮助中心。 7年前关闭。 我只需要投1 char到string。相反的方法很简单str[0]。 以下对我不起作用: char c = 34; string(1,c); //this doesn't work, the string is always empty. string s(c); //also doesn't work. boost::lexical_cast&lt;string&gt;((int)c); //also doesn't work.
121 c++  casting 

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.