C++
文章平均质量分 97
千语始祖,万码之源。
平头哥阿威
coding....
展开
-
C++迭代器失效
文章目录序列式容器vectordeque关联式容器序列式容器vector向量容器。底层是动态开辟的一维数组,内存可增长,Linux每次增长2倍,Windows每次1.5倍。erase(it)会使it之后节点的迭代器失效。避免方法就是it=erase(it);push_back()会导致若干节点迭代器失效。deque双端队列容器。底层是动态开辟的二维数组,一位数组里全部存的是指针,二维数组是动态开辟的,所以说deque的底层是一个部分连续整体不 连续的结构erase(it)指向的是de原创 2020-06-21 14:29:21 · 310 阅读 · 0 评论 -
C++11线程对象thread
文章目录C++11的线程库thread对象thread对象构造函数thread对象结束方式thread对象的其它成员函数原子变量实现线程池C++11的线程库线程类thread,提供RAII式线程的创建和销毁。创建线程时传入线程要执行的代码段(函数、lamda表达式)和参数,thread析构函数会自动销毁线程。thread对象thread对象构造函数通过全局函数构造通过lamda表达式来...原创 2019-05-07 22:56:49 · 2039 阅读 · 0 评论 -
右值引用:移动语义和完美转发
文章目录左值和右值右值引用lambda表达式线程库左值和右值区分左值、右值等号左边的一定是左值,左值可以被赋值,左值可以赋值给其它对象。等号右边的不一定是右值。右值只能出现在等号右边,其它对象不能赋值给具有右值属性的对象。右值概念右值分为纯右值和将亡值纯右值主要识别临时变量和一些不跟对象关联的值。比如:常量、一些运算表达式(1+3)等。将亡值声明周期将要结束的对象。比如:在值返回时...原创 2019-04-29 15:44:48 · 447 阅读 · 0 评论 -
C++11实用新特性
文章目录尬聊C++语言列表初始化变量类型推导autodecltypefor循环final和override委派构造默认函数控制尬聊C++语言众所周知,C++是由C语言发展而来的。因此,C++语言需要兼容C语言,而C语言是面向过程语言,相比其它面向对象语言C++还继承了C语言的缺陷。C++语言虽然存在缺陷,但是它仍然是面向对象语言,受到其它面向对象语言的“激励”,C++语言也在不断变化,C++...原创 2019-03-22 19:15:40 · 381 阅读 · 0 评论 -
函数对象:lamda表达式
文章目录仿函数:函数对象functional头文件中的函数对象自定义函数对象lamda表达式lamda表达式和函数对象在需要排序时候,如何快速实现排序。C++算法库为我们提供了sort函数,其底层通过快排实现。sort函数可以传递两个参数,一个是排序排序元素起始地址,第二个是排序元素结束地址,这样传入参数,sort会默认排升序。当你的排序方式不仅仅需要简单排升序时候,就需要用到sort的第三个...原创 2019-05-06 16:30:49 · 571 阅读 · 0 评论 -
让自己习惯C++(1~4)
文章目录1 视C++为一个语言联邦2 尽量以const、enum、inline替换#define3 尽可能使用const4 使用对象前确定其已经被初始化1 视C++为一个语言联邦View C++ as a federation of languages众所周知,C++是由C语言发展而来的。因此,C++语言需要兼容C语言,而C语言是面向过程语言,相比其它面向对象语言C++还继承了C语言的缺陷...原创 2019-06-23 21:16:13 · 315 阅读 · 0 评论 -
构造/析构/赋值运算(一)
5. 了解C++默认成员函数编译器默认产生构造、析构、拷贝构造、赋值运算重载等默认函数。默认析构函数是个non-virtual,除非这个class的bass class自身声明有virtual析构函数。默认拷贝构造会以“拷贝源对象的每一个bits”来完成初始化。...原创 2019-12-22 17:15:01 · 281 阅读 · 0 评论 -
构造/析构/赋值运算(二)
文章目录构造/析构/赋值运算9.绝不在构造和析构过程中调用virtual函数10.令operator=返回一个reference to *this11.在operator=中处理“自我赋值”构造/析构/赋值运算Constructors,Destructors,and Assignment Operators9.绝不在构造和析构过程中调用virtual函数Never call virtual...原创 2019-12-29 16:24:50 · 309 阅读 · 0 评论 -
资源管理
资源管理系统资源当不再使用时,必须将它归还。13.以对象管理资源Use object to manage resources14.原创 2020-01-03 16:14:54 · 492 阅读 · 0 评论 -
内存对齐:位段大小
二、内存对齐struct A{ char d = 'a'; short b = 2; int a = 20; long c = 8;}x;struct B{ int a = 20; short b = 2; long c = 8; char d = 'a';}y;int main(){ cout << sizeof(x)<<endl <...原创 2019-05-04 17:08:36 · 526 阅读 · 1 评论 -
C语言:数据类型
文章目录变量C语言关键字类型大小32位操作系统64位操作系统差别变量C语言标识符包括变量、函数名、宏定义、结构体成员名。C 语言规定中的标识符必须以字母或下划线 _开头,后面可以跟若干个字母、数字、下划线,不能有其它字符。关键字不能定义为标识符。C语言关键字auto break case char const continue default do double...原创 2019-04-29 19:21:28 · 642 阅读 · 0 评论 -
数据结构:堆
堆是将一组数据按照完全二叉树的存储顺序,将数据存储在一个一维数组中的结构。堆有两种结构,一种称为大顶堆,一种称为小顶堆,如下图。小顶堆:任意结点的值均小于等于它的左右孩子,并且最小的值位于堆顶,即根节点处。大顶堆:任意结点的值均大于等于它的左右孩子,并且最大的值位于堆顶,即根节点处。...原创 2019-02-15 11:45:05 · 616 阅读 · 1 评论 -
strlen和sizeof对比
sizeof( )是运算符功能:获得类型或表达式的最大对象的字节大小。sizeof()可以计算数组、指针、类型、对象、函数数组——编译时分配的数组空间大小;指针——存储该指针所用的空间大小(存储该指针的地址的长度,是长整型,32位操作系统应该为4);类型——该类型所占的空间大小;对象——对象的实际占用空间大小;函数——函数的返回类型所占的空间大小。函数的返回类型不能是void。...原创 2018-12-15 16:58:46 · 334 阅读 · 0 评论 -
C++强制类型转换
文章目录C语言的强制类型转换C++ 的强制类型转换const_castdynamic_cast----RTTI运行时类型识别static_castreinterpret_castC语言的强制类型转换先看个笔试选择常考题,看下面代码,写出运行结果:#include&amp;amp;amp;amp;lt;iostream&amp;amp;amp;amp;gt;using namespace std;int main(){ const int a = ...原创 2019-01-27 11:06:33 · 1549 阅读 · 0 评论 -
C++单例模式
文章目录只在堆上或者只在栈上的类饿汉模式懒汉模式只在堆上或者只在栈上的类请设计一个类,该类只能在堆上创建对象1、将类的构造函数私有,拷贝构造声明私有。 防止别人调用拷贝在栈上生成对象。2. 提供一个静态的成员函数,在该静态成员函数中完成堆对象的创建。#include&amp;amp;lt;iostream&amp;amp;gt;using namespace std;class OnlyHeap{publi...原创 2019-01-25 19:28:58 · 409 阅读 · 0 评论 -
RAII--智能指针
为什么需要RAII(Resource Acquisition Is Initialization)?当动态申请了空间之后,在不需要这个空间的时候一定要释放,否则存在内存泄漏问题?那么我们怎么保证,自己申请的空间都被释放了呢?如果程序抛异常了,还可以保证吗?什么是RAII?管理资源、避免内存泄露构造函数时候把资源保存起来,以便使用完毕后释放。return(return前释放)、抛异常(二次抛...原创 2019-01-25 00:00:41 · 510 阅读 · 0 评论 -
C++异常处理
为什么需要RAII(Resource Acquisition Is Initialization)?当动态申请了空间之后,在不需要这个空间的时候一定要释放,否则存在内存泄漏问题?那么我们怎么保证,自己申请的空间都被释放了呢?如果程序抛异常了,还可以保证吗?什么是RAII?管理资源、避免内存泄露构造函数时候把资源保存起来,以便使用完毕后释放。return(return前释放)、抛异常(二次抛...原创 2019-01-23 11:34:06 · 2367 阅读 · 0 评论 -
vector
vector和数组有什么区别?1)就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。2)但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。3)vector分配空间策略:vector会分配一些额外的空间以适应可能的增长,因为存储空间比实际需要的存储空间更大。 vector占用了更多的存储空间,为...原创 2019-01-22 09:58:16 · 432 阅读 · 0 评论 -
从继承关系看多态
文章目录单继承的虚函数重写多继承中的虚函数重写单继承的虚函数重写既然我们知道对于一个有虚函数的对象来说,它的头四个字节是虚函数表指针,那么如果我们拿到这个虚函数表指针就可以找到这个虚函数表。这四个字节中存储的是地址,我们可以取地址,然后将这个地址强转成int*,对这个指针解引用就可以取得前四个字节的内容也就是虚函数表地址。PrintVirtable这个函数拿到虚函数表地址之后,开始从这个地址...原创 2019-01-20 12:42:17 · 169 阅读 · 0 评论 -
菱形继承
文章目录菱形继承----我娃到底跟谁姓虚继承虚基表菱形继承----我娃到底跟谁姓因为这种继承形似菱形,因此称之为菱形继承,或者钻石继承。class Grandfather{public: string First_Name;private: string Last_Name;};class Father :public Grandfather{ string Last_...原创 2019-01-19 10:12:28 · 540 阅读 · 0 评论 -
C语言 宏
宏原创 2019-01-15 13:02:57 · 544 阅读 · 0 评论 -
虚函数和多态
什么是多态?多态:当使用基类的指针或引用调用重写的虚函数时,当指向父类调用,父类的虚函数;当指向子类,调用子类的虚函数。怎么实现多态?下面就是一个最简单的多态的实现:#include&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;iostream&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;原创 2018-09-29 15:14:45 · 328 阅读 · 0 评论 -
分支语句和循环语句
读下面代码,预测结果#include &amp;amp;amp;amp;lt;stdio.h&amp;amp;amp;amp;gt;#include&amp;amp;amp;amp;lt;stdlib.h&amp;amp;amp;amp;gt;int main(){ int n = 1; int m = 2; switch (n) { case 1: m++; case 2: n++; case 3: swi原创 2019-01-06 22:44:51 · 503 阅读 · 0 评论 -
C语言:指针和数组
基础复习大部分c语言的初学者都表示指针很让人头疼,而后你会发现: 指针变量(指针);生来就是为了保存地址的变量,指针的值直接指向存在电脑存储器中另一个地方的值。 总结:1、指针就是变量,用来存放地址的变量。 2、对于二维数组传参,函数形参的设计只能省略第一个[ ]。 3、数组传参降级为指针,即降级为指向其内部元素类型。 4、指针是变量,传参也会进行临时拷贝。int a[] ...原创 2018-03-15 00:13:35 · 419 阅读 · 0 评论 -
字符串函数的模拟实现
1.实现strcpy #define _CRT_SECURE_NO_WARNINGS#include&amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;stdio.h&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;#include&amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;Windows.h&amp;amp;amp;amp;amp;amp原创 2018-05-13 17:12:48 · 449 阅读 · 0 评论 -
字符串左旋--字符串排序--字符串逆置
1.实现一个函数,可以左旋字符串中的k个字符。 ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB #define _CRT_SECURE_NO_WARNINGS#include&amp;amp;amp;amp;amp;amp;amp;amp;lt;stdio.h&amp;amp;amp;amp;amp;amp;amp;amp;gt;#include&amp;amp;amp;amp;amp;amp;amp;amp;l原创 2019-01-08 23:34:01 · 1068 阅读 · 0 评论 -
可变参数列表
2.使用可变参数,实现函数,求函数参数的平均值。 #define _CRT_SECURE_NO_WARNINGS#include&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;stdio.h&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;#include&am原创 2018-05-13 17:25:30 · 334 阅读 · 0 评论 -
C++入门
很多同学学习了C语言,对C++了解甚少,这一篇,让对C++有初步了解。一.介绍一下C++ C几乎是C++的一个子集,所以C语言支持的语法在C++基本都支持并需要使用。C plus plus(C++),所以在C的基础上又有了很多新的特性。类型比较:相比C,C++显著的特点是有了对象。 what???对象?? 是的,C++也是面向对象编程语言之一。 what??面向对象??那没有对象...原创 2018-06-09 16:44:16 · 498 阅读 · 0 评论 -
引用
一.引用的概念及用法 引用:给一个已经定义了的变量重新起一个别名。 定义格式: 类型&amp;amp;amp;amp;amp;amp;amp;amp;引用变量名=已定义的变量名 (一)引用原则: 1、引用必须在定义的时候就给定引用对象,而且一个引用变量只能引用唯一的一个已经定义的变量。 2、一个变量可以有多个不同的引用变量。我这样来理解,变量在古代肯定是皇帝,而引用是妃子。可以有无数个妃子属于皇帝,但是一个妃子只能属于一个皇帝,否...原创 2018-06-09 18:18:46 · 352 阅读 · 0 评论 -
面向对象:默认成员函数
一.什么是面向对象? A:面向对象??我没有对象,怎么编程?? B:同学想啥呢??这里所说的对象是类的实例化。 类:类是一种复杂的数据类型,它是将不同类型的数据和与这些数据相关的操作封装在一起的集合体。 这有点像C语言中的结构,唯一不同的就是结构没有定义所说的“数据相关的操作”,“数据相关的操作”就是我们平常经常看到的“方法”,因此,类具有更高的抽象性,类中的数据具有隐藏性,类还具有封装...原创 2018-06-15 14:04:17 · 324 阅读 · 0 评论 -
C++内存管理
复习内存管理有关基础知识在学习C++以前,我们了解到内存管理涉及到地址空间,所谓的地址空间并不是实际存在的,因此地址空间又称虚拟地址空间。...原创 2018-06-15 12:27:55 · 602 阅读 · 0 评论 -
类内关键字const、inline、friend、static
写一篇博客,完成以下内容: 1.const成员函数 2.内联函数 3.友元 4.static成员 5.N中构造拷贝构造的优化 Test1中调用了次AA的拷贝构造函数,次AA的赋值运算符函数的重载。 Test2中调用了次AA的拷贝构造函数,次AA的赋值运算符函数的重载。 Test3中调用了次AA的拷贝构造函数,次AA的赋值运算符函数的重载。 class AA ...原创 2018-06-16 21:58:06 · 510 阅读 · 0 评论 -
C语言重点知识
static下面是中兴通讯2012校招笔试题的一道问答题:static全局变量与普通的全局变量有什么区别 ? 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。 全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。 这两者的区别在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非...原创 2018-09-11 19:05:31 · 1148 阅读 · 0 评论 -
C++继承
众多新手在接触编程所要面对的必修课——C语言而一些“甲骨文”式的编译器(比如VC6.0等)已经逐步被淘汰,今天给大家介绍一下VS的使用技巧:首先,你可以去这里下载最新版本的VS。printf(&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot;hello world\n&amp;amp;amp;am原创 2018-09-17 22:43:55 · 593 阅读 · 0 评论