草庐IT

有的是

全部标签

c++ - 动态内存使用速度较慢的是什么?

这个问题在这里已经有了答案:Whichisfaster:StackallocationorHeapallocation(24个答案)关闭9年前。我知道在栈上分配内存比在堆上分配内存快,但为什么堆内存分配速度慢呢?是因为堆栈分配是连续的,因此问题是由于缓存局部性引起的吗?不是内存分配后的使用情况,是分配的时间哪个慢?

c++ - 访问声明已弃用,取而代之的是使用声明;建议 : add the ‘using’ keyword

我回到了我以前的C++学校作业中,它实现了一个二叉树。我有一个文件(Tree.cpp),其中包含用于插入、查找、删除等节点的函数。在顶部,我有“usingnamespacestd;”。我收到的警告是由另一个文件SymTab.hpp引起的,它看起来像这样:#ifndefSYMTAB_H#defineSYMTAB_H#include#include"Tree.hpp"usingnamespacestd;templateclassSymTab:privateTree{public:Tree::Insert;Tree::Lookup;Tree::Remove;Tree::Write;Tree:

c++ - 现有的标准仿函数/函数来检查是否等于 0?

我想计算无符号长整数vector中0的数量。是否存在要传递给std::count_if的现有标准函数/仿函数?还是像这个例子一样自己写?classis_equal{private:unsignedlongintv;public:is_equal(unsignedlongintvalue):v(value){}booloperator()(unsignedlongintx){returnx==this->v;}};unsignedlongintcount_zero(conststd::vector&data){returnstd::count_if(data.begin(),data.e

c++ - 如果有的话,有没有办法获得 QColor 的智能名称?

我按名称(“红色”、“绿色”)创建了一种颜色,但稍后当我询问它的名称时,我得到了RGB信息。有没有办法检索颜色名称(如果有的话)(显然,它们不可能都有名称)。#include#includeintmain(intargc,char*argv[]){QColorcolor("red");std::cout这会输出“#ff0000”,我希望它输出“red”。 最佳答案 我从文档中看到的唯一方法是遍历Qt知道的所有命名颜色(由QColor::colorNames()提供),将每个颜色转换为QColor并检查颜色是否匹配(operator=

使用ST-Link烧录程序出现No target connected所有的解决方案

原因分析及解决办法:1)芯片供电不足,导致找不到芯片;【解决办法】用杜邦线或者usb线对芯片再次进行供电 2) ST-Link与单片机接线错误,或者接线不良; 【解决办法】按照下面的方式进行接线,并确保接线良好3.3V⬅➡3.3VGND⬅➡GNDSWDIO⬅➡SWDIOSWCLK⬅➡SWCLK3)SWD引脚被占用或者被禁用 【解决办法】此时可以有两种方法可以解决:按住RESET,并在点击烧录后立马放开,抢一个时间差,这个方法有一定概率会失败,可以多尝试几次;把BOOT0拉高,可以将芯片从系统存储器或者是内置SRAM中启动,这时候并不会运行闪存存储器的程序,那么SWD就没有被占用,烧录一个正常的

c++ - 将现有的 .h 和 .c 文件添加到 Microsoft Visual Studio 2010 C++ 项目

我想在我的MSVS2010C++项目中使用一些预先编写的.h和.c文件。这些是我想在我的项目中使用的库的源文件。我去了并将.h文件添加到我的MSVS解决方案中的“HeaderFiles”文件夹,并将.c文件添加到“SourceFiles”文件夹。但是,当我使用include"sample.h"包含其中一个.h文件时,它无法识别该头文件。我需要做什么才能让MSVS识别添加的文件?感谢您的帮助。 最佳答案 将header的路径添加到项目设置中的Extraincludedirectories。将现有文件添加到项目中实际上并不会复制文件。它

c++ - 包含在 header 或 cpp 中——Qt 中首选的是什么

当我写一个C++类时,我只在头文件中包含了特定情况。我更喜欢前向声明,我相信这是C++中的最佳实践。但是Qt类通常有很多属于标准Qt类的字段,因此将它们全部写在前向声明中似乎不是一个好主意。有什么首选方法吗?Qt有大量的文档,所以我认为它已经回答了我的问题,但我才刚刚开始阅读它。 最佳答案 我的规则是头文件只包含那些定义相关头文件使用的功能的文件。假设您在header中有指向某个类Foo的指针和引用,但header从未插入或实例化这些对象。在这种情况下,您不需要类的定义。您只需要一个前向声明。另一方面,如果您插入类型为Foo的对象,

c++ - 使用 std::move 和 std::shared_ptr 有什么好处和风险(如果有的话)

我正在学习C++11的特性,作为其中的一部分,我首先进入了unique_ptr和shared_ptr的世界。开始时,我编写了一些专门使用unique_ptr的代码,因此当我传递我的变量时,我需要使用std::move来完成它(或者让我明白)。经过一番努力,我意识到我确实需要shared_ptr而不是我正在做的事情。稍后快速查找/替换,我的指针被切换到共享,但我懒洋洋地只是留下了move()调用。令我惊讶的是,它不仅可以编译,而且在我的程序中表现得非常好,我得到了我期望的每一点功能......特别是,我能够“move”一个shared_ptr从ObjectA到ObjectB,并且两个对象

c++ - 为什么所有现有的 C++ 编译器都不支持继承构造函数?

目前,G++和VC++2010都不支持继承构造函数。但是,我认为这是C++0x中最漂亮的功能之一。而且我认为它应该很容易由编译器实现。为什么编译器对这个特性不感兴趣?假设我想像这样通过继承std::string来设计我自己的字符串类:classMyString:publicstd::string{public://Ihavetoredefinemanyoverloadedctorshereandforwardtheirargumentsto//std::string'sctors.Howtediousitwillbe!!!};一个漂亮的代码示例:structB1{B1(char);};

C++11 是否所有的控制路径都需要返回值?

这似乎是一个荒谬的问题,但今天我用C++编写了一个成员函数,它应该返回和int,但并不总是。我什至写了一个不返回值的非常简单的函数...intderp(){if(11==22)return0;}这是最近的变化吗?我的编译器坏了吗?哈哈编辑:顺便说一下,这会编译 最佳答案 在非void函数中,所有控制路径都必须返回。这里的关键问题是编译器不需要对其进行诊断。请注意,编译和正确不一定相同。所有正确代码都会编译,但并非所有编译的代码都是正确。 关于C++11是否所有的控制路径都需要返回值?,我