C/C++
文章平均质量分 72
大山喵
这个作者很懒,什么都没留下…
展开
-
对象和类
《C++Primer Plus 第 10章 对象和类》 知识点梳理: 1.OOP特性: (1) 抽象; (2) 封装和数据隐藏; (3) 多态; (4) 继承; (5) 代码的重用性。2.采用OOP方法时,首先从用户的角度考虑对象——描述对象所需的数据以及描述用户与数据交互所需的操作,完成对接口的描述后,需要确定如何实现接口和数据存储。3.抽象原创 2016-11-01 23:27:39 · 440 阅读 · 0 评论 -
C/C++ 取整函数:ceil、floor和trunc函数
取整操作是处理浮点型数据常用的操作,C/C++提供了3中取整方式,以供使用——double floor(double x); 顾名思义,floor函数的功能是向下取整。double ceil(double x); ceil的功能是向上取整。double trunc(double x); trunc的功能是舍尾操作。 这三个函数都需要引入头文件#include&...原创 2018-12-05 10:31:46 · 7145 阅读 · 1 评论 -
VisualStudio 2017 滚动条预览
使用Visual Studio Code的时候,右手边自带的代码全局预览挺好用的,近期才发现,原来VS2017也有这个功能,只是需要手动打开罢了,操作如下——先右击右侧滚动条(emmm……不愧是宇宙第一IDE,连滚动条都有菜单 Orz)然后在菜单中选中映射模式(map mode)最后效果——...原创 2018-12-05 19:55:42 · 1734 阅读 · 0 评论 -
range-based for循环
C++11提供了一种基于范围的for循环,这对于STL迭代器的使用大为简化,语法如下——#include<iostream>#include<vector>using namespace std;int main(){ vector<int> v1 = {1,3,5,7,9}; vector<int> v2 = {2原创 2018-12-03 19:53:51 · 1245 阅读 · 1 评论 -
error:stray'\243'in program
该错误代表编译器在编译源文件时遇到了不可识别的非法字符。其值为ascii码值243。这一个值并不在合法的英文字符范围(0~127)范围内,所以一般都是由于误输入造成的。 出现这类问题时,需要根据提示错误的行数,找到对应行,然后重点查找以下几个方面: 1 是否存在汉字。 大多数的C编译器并不识别汉字,所以变量名中不要使用汉字。 2 是否存在汉语标点。 这种情况是最常见的。C...原创 2018-12-17 10:03:33 · 3765 阅读 · 1 评论 -
C/C++:long int与long long的区别
long int long int即long,给人的感觉好像是长整型,但实际上,它和int一样,只有32位。cppreference给出的定义是——int - basic integer type. The keyword int may be omitted if any of the modifiers listed below are used. If no length modif...原创 2018-12-25 11:07:02 · 182080 阅读 · 12 评论 -
std::stack使用总结
Stack(堆栈) stack是一种简单而常用的数据结构,stl库中提供了现成的实现方案。 在使用stack的时候,需要包含头文件stack,其在std中的定义如下:template< class T, class Container = std::deque<T>> class stack; 第一个参数定义了元素的类型,第二个参数表示s...原创 2019-01-07 14:31:21 · 5040 阅读 · 2 评论 -
C/C++ 字符判断函数总结
前言 在做诸如字符串处理这种类型的题目的时候,总是要涉及到字符判断这种问题,尤其是在数字与字符之间进行转换时。初学者总会自然而然的手动去实现这个功能,比如判断字符是否是一个数字——// 判断字符是否在 0~9之间bool isnum(const char&c){ if(c>='0'&&c<='9') return true; else return ...原创 2019-01-08 21:56:27 · 8628 阅读 · 0 评论 -
Visual Studio中#include"stdafx.h"的作用
stdafx.h文件 stdafx的英文全称为:Standard Application Framework Extensions(标准应用程序框架的扩展),stdafx.h并不是标准的C++系统头文件,也就是说,该文件本质上是Visual Studio自定义的头文件,由编译器生成,名称可以在属性管理器中自定义。 从内容上讲,stdafx.h文件主要存放以下两类语句——标准系统包含文件...原创 2019-02-16 21:48:19 · 4069 阅读 · 1 评论 -
Qt:There's no Qt version
这个问题是Qt没有配置好的缘故,只需要在Qt VS TOOLS的Qt project Settings手动配置即可。Qt VS TOOLS插件还是挺笨的,有时候能自动识别版本还有其他的配置,但有时候不能,挺坑的。问题解决。...原创 2019-03-16 21:32:29 · 1236 阅读 · 1 评论 -
error MSB6006: “cmd.exe” exited with code 1.
造成这个问题的原因挺多的,文件不全、管理员权限不够、路径中包含中文、路径中含有空格…与其在网上盲目的找帖子,不如自己好好想想最近都改动了哪些东西才导致了这个问题。我是因为在VS中使用Qt设计器给界面按钮加图标,才导致这个问题的,但是仔细想想,Qt用了那么久,没出过这种问题啊,可能是添加资源的时候,VS和Qt抢夺对资源的管理权,然后导致这个问题?我把Qt Designer关掉,然后Rebuild...原创 2019-03-31 05:44:39 · 3311 阅读 · 0 评论 -
Qt:在VS中手动配置ui文件和类
在VS中,通过Qt的扩展插件Qt VS Tools可以进行Qt框架的相关开发,但由于IDE的不同,ui文件的配置和使用也会有些许不同,本文将介绍一种基础的ui文件配置方法。 首先在VS的Qt VS Tools(早期版本是Qt5)中打开Qt Designer,创建我们所需的ui文件。 由于Qt Designer是独立于VS之外的一个编辑器,所以无法定位到当前项目的所在,在保存ui文件的...原创 2019-03-31 20:42:00 · 7890 阅读 · 1 评论 -
C2653 'Ui': is not a class or namespace name
关于“C2653 'Ui': is not a class or namespace name”问题的解决方案。原创 2019-03-29 11:28:35 · 2000 阅读 · 0 评论 -
Qt/C++:Access violation reading locaton 0x0000000000000005
遇到这种问题的原因有很多,如果项目中使用了指针,大概率访问了已经释放掉的内存(或者是根本不存在的内存)。回忆一下自己之前都做了哪些改动,然后对可疑的地方单步调试,总能找出问题所在的。 比如,我这个项目中,在构造函数中,对一堆指针赋初值nullptr,但是漏掉了其中一个对象指针roiSelection,然后在析构函数中有安全性判定—— if (parameter != nullptr) ...原创 2019-04-28 16:44:38 · 2200 阅读 · 0 评论 -
C++:LNK2005:xxx already defined in main.obj
问题描述 使用一个全局变量测试多线程同时访问一个变量的性能,结果却报错了 多重定义了,于是顺藤摸瓜,找到了变量thread_index的位置// MyThread.hint thread_index = 0; 以及使用这个变量的地方——// Source.cpp#include"MyThread.h"...int main(){ ... thread_index+...原创 2019-05-05 09:45:03 · 2005 阅读 · 0 评论 -
VisualStudio 2017:connot open source file XXX.h 以及The Windows SDK version 10.0.17134.0 was not found
换了新的笔记本电脑,然后把移动硬盘上以前的项目都给配置一下,解过发现莫名其妙的抽风了—— 系统库函数打不开了,第一反应是VS装的有问题,遂用Visual Studio Installer点击修复,无果。然后乖乖上网百度了一下,原来是Windows SDK出了问题,仔细翻了一下这3630的错误,才发现,确实有那么一行字是描述该错误的Error MSB8036 The Windows S...原创 2019-07-16 23:00:34 · 1332 阅读 · 2 评论 -
C/C++ 四舍五入函数:round函数
刷OJ的时候,经常会遇到让求浮点型的四舍五入,其实不必手动编程去算,因为C/C++提供了round函数来实现这个功能——#include<iostream>#include<cmath>using namespace std;int main(){ cout<<"round(1.3) = "<<round(1.3)<<en...原创 2018-12-04 19:30:57 · 45547 阅读 · 0 评论 -
自定义关联容器的排序规则
前言 关联式容器与序列容器最大的区别在于,内部结构是平衡二叉树构成,而非线性表结构。这种结构决定了关联式容器与生俱来的天赋——具有独一无二的查找效率。而决定这一特性的重要前提,则是其所具有自动排序的能力。这种排序能力保证了二叉树的平衡性,从而保证了查找效率控制在O(log2n)O(log_2n)O(log2n)的水平。 关联式容器提供了定义排序规则的接口,默认使用仿函数less&amp;amp;lt;t...原创 2018-11-08 22:13:19 · 581 阅读 · 0 评论 -
C++ STL:Predicate vs. Function Object
所谓Predicate(判断式),就是返回Boolean值的函数或者函数对象。对STL而言,并非所有返回Boolean的函数都是合法的Predicate。这可能会导致出人意料的结果——#include&amp;lt;iostream&amp;gt;#include&amp;lt;list&amp;gt;#include&amp;lt;algorithm&amp;gt;using namespace s原创 2018-11-11 22:38:42 · 625 阅读 · 2 评论 -
std函数:fill和fill_n
有时候,我们可能需要对某一块数据进行初始化,比如说,把一个int a[10] 元素初始化为-1,最简单的做法就是使用一个for循环: for(int i=0;i&amp;amp;amp;lt;10;i++){ a[i] = -1;} 但这个方式,太单调简陋了,能做的不多,扩展性为零,而且写个for循环逐一赋值,似乎也不够高明。 std库提供了更好的方法来“填充数据”,简单学习一下。...原创 2018-07-03 10:34:57 · 8516 阅读 · 0 评论 -
C++的类型转换运算符总结
前言1 dynamic_cast2 static_cast3 const_cast4 reinterpret_cast总结参考链接前言 C语言的类型转换比较自由,但也带来了一些问题,这些问题大多由程序员自行控制和解决。对于庞大的C++语言机制而言,这种简单粗暴的类型转换方式显然是个巨大的负担,因此C++引入4种类型转换运算符,更加严格的限制允许的类型转换,...原创 2018-08-27 17:52:07 · 2663 阅读 · 1 评论 -
C语言 内存布局学习总结
前言C语言内存布局参考链接前言 C语言的内存布局对于理解C语言类型的作用域和声明周期,以及C语言对操作系统资源的使用规则至关重要,因此,理解C语言的内存布局模型,有助于深入理解C语言编程思想,以及高屋建瓴的学习C++内存布局模型。 本文是对C语言内存布局的学习总结。C语言内存布局 一个程序本质上都是由BSS段、data段和text段三部分组成...原创 2018-08-29 22:19:02 · 752 阅读 · 0 评论 -
C++引用学习总结
文章目录0 前言1 引用(reference)1.1 引用的定义1.2 使用规则2 引用的使用举例2.1 常引用2.2 函数参数2.3 函数返回值2.4 类的多态3 总结4 参考文献0 前言 引用是C++很重要的一个编程技术,相比于指针,引用在某些场景下具有无可替代的作用。以前只知道引用是当做一个别名来使用,只知道一般性用法,前段时间面试百度的时候被面试官问懵逼了,才知道引用原来比自己想...原创 2018-09-25 16:12:46 · 406 阅读 · 0 评论 -
std::vector使用总结
Vector Vector描述的是一个动态数组(dynamic array),并提供了相关操作和接口。 在使用Vector之前,需要引入头文件#include&amp;amp;amp;lt;vector&amp;amp;amp;gt;,在此头文件中,类型vector是一个定义于namespace std内的template:template&amp;amp;amp;lt; class T, class Allocator原创 2018-10-12 11:03:04 · 23585 阅读 · 2 评论 -
std::Deque使用总结
Deque原创 2018-10-12 16:32:12 · 14393 阅读 · 1 评论 -
#include指令引号与尖括号的区别
#include是C/C++的预处理指令(Preprocessor Directive),主要作用是把头文件引入到任意源文件中,在预处理阶段,被包含的文件在源文件的指令地点进行整体替换。#include指令有两种使用格式,分别是: #include&amp;lt;path-spec&amp;gt; // Angle bracket form #include&quot;path-spec&quot; // Quoted ...原创 2018-09-27 21:35:51 · 1868 阅读 · 1 评论 -
std::List使用总结
List List使用一个doubly linked list(双向串列)管理元素,按惯例,C++标准库并未明定实现方式,只是遵守list的名称、限制和规格。 使用list时必须先包含头文件#include&amp;amp;lt;list&amp;amp;gt; 其中的list类型定义于namespace std 中,是一个class template:template&amp;amp;lt; class T,原创 2018-10-13 14:52:18 · 21885 阅读 · 0 评论 -
C++11 Lambda表达式
Lambda表达式C++11的一大特性就是引入了Lambda表达式,并在后续的C++14进行了加强。利用Lambda表达式,可以方便定义和创建匿名函数,一个Lambda表达式表示一个可调用单元,我们可以将其理解为一个未命名的内联函数。Lambda语法定义[capture list] (paramters list) mutable exception-&amp;gt; return type{fun...原创 2018-10-13 16:32:41 · 2030 阅读 · 0 评论 -
std::set与std::multiset使用总结
Set和MultisetSet和Multiset的能力Set和Multiset的操作函数创建、复制和析构函数非更易型操作(Nonmodifying Operating)特殊的查找函数赋值(Assignment)迭代器函数(Iterator Function)插入和移除(Inserting and Removing)异常处理 ...原创 2018-11-04 22:47:40 · 5804 阅读 · 0 评论 -
std::map和std::multimap的使用总结
Map和Multimap Map和Multimap(下文统称Map)将key/value作为元素进行管理,逻辑上是一种键值映射关系,即数据结构中哈希表。它们可以根据key的排序规则进行自动元素排序,Multimap允许元素重复,而Map不允许。 在使用Map和Multimap之前, 必须引入头文件map #include<map> 在其中,map和multimap在s...原创 2018-11-07 11:44:20 · 12932 阅读 · 1 评论 -
C++STL中的函数对象
前言 所谓函数对象,即 Function Object ,或者称之为仿函数(functors)。顾名思义,就是像函数的一种对象,我们可以把函数对象看作是一个函数与对象的结合,一方面,它本质上是一个对象,但主要功能是使用其成员函数(主要是operator())在不同的容器和函数中传值;另一方面,它相比于普通函数作为函数参数,具有更强大的数据传递能力。函数对象,像函数而比函数强大,是对象,而没有对...原创 2018-11-10 12:20:06 · 1512 阅读 · 1 评论 -
libstdc++.so.6:version 'GLIBCXX_3.4.21' not found
安装某IDE的时候遇到问题——输入指令strings /usr/lib64/libstdc++.so.6 | grep GLIBC得到emmm,确实没有3.4.20的版本,需要升级gcc理论上,我们得到高于3.4.20的版本均可所以,我们可以下载一个较高的版本,推荐使用国内的连接,而不是GNU的官网上的(下载速度太慢了)http://mirrors.hust.edu.cn/gn...原创 2018-11-13 19:10:07 · 2198 阅读 · 1 评论 -
error C2143: 语法错误 : 缺少“;”(在“*”的前面)
问题描述 今天遇到一个bug,找了半天都没搞定,后来还是通过百度搜索到类似的帖子才解决的,其实很简单,只是以前没有见过罢了。在ResultDialog*resultDialog; 附近,怎么都不可能出错,怎么会缺少“;”呢?原因在于,在HeartRateDetect类的定义中添加了防止重复包含的宏定义#ifndef _HeartRateDetect_H#define _He...原创 2017-01-13 14:22:22 · 19140 阅读 · 11 评论