C和C++
文章平均质量分 76
在学习过程中记录一些心得,总结一些知识,便于随时查阅
徐kun按门铃
越来越靠近那个更喜欢的自己!
展开
-
STL中的算法简述
1.函数对象:概述:重载函数调用操作符的类,其对象常称为函数对象(function object),即它们是 行为类似函数的对象,也叫仿函数(functor),其实就是重载“()”操作符,使得类对象 可以像函数那样调用。1.1注意:.函数对象(仿函数)是一个类,不是一个函数。函 数对象(仿函数)重载了”() ”操作符使得它可以像函数一样调用。1.2分类:假定某个类 有一个重载的 operator(),而且重载的 operator()要求获取一个参数,我们就将这 个类称为“一元仿函数”(unary原创 2021-02-25 22:14:27 · 159 阅读 · 0 评论 -
STL中常用的容器——stack,queue和list容器
一,stack容器1,stack容器概述:stack 是一种先进后出(First In Last Out,FILO)的数据结构,它只有一个出口,形式 如图所示。stack 容器允许新增元素,移除元素,取得栈顶元素,但是除了最顶端 外,没有任何其他方法可以存取 stack 的其他元素。换言之,stack 不允许有遍历 行为。 有元素推入栈的操作称为:push,将元素推出 stack 的操作称为 pop.如下:2.stack迭代器Stack 所有元素的进出都必须符合”先进后出”的条件,只有 stac原创 2021-02-21 19:13:51 · 752 阅读 · 0 评论 -
STL中常用的容器——deque容器
1.基本概念:Vector 容器是单向开口的连续内存空间,deque 则是一种双向开口的连续线性空 间。所谓的双向开口,意思是可以在头尾两端分别做元素的插入和删除操作,当 然,vector 容器也可以在头尾两端插入元素,但是在其头部操作效率奇差,无法被 接受。2.Deque容器和vector容器比较:Deque 容器和 vector 容器最大的差异,一在于 deque 允许使用常数项时间对头端 进行元素的插入和删除操作。二在于 deque 没有容量的概念,因为它是动态的以 分段连续空间组合而成,随时原创 2021-02-21 11:39:58 · 210 阅读 · 0 评论 -
STL中常用的容器——vector容器
1,基本概念vector 的数据安排以及操作方式,与 array 非常相似,两者的唯一差别在于空间的 运用的灵活性。Array 是静态空间,一旦配置了就不能改变,要换大一点或者小一 点的空间,可以,一切琐碎得由自己来,首先配置一块新的空间,然后将旧空间的 数据搬往新空间,再释放原来的空间。Vector 是动态空间,随着元素的加入,它 的内部机制会自动扩充空间以容纳新元素。2,vector的迭代器:Vector 维护一个线性空间,所以不论元素的型别如何,普通指针都可以作为 vector 的迭代器,因为原创 2021-02-20 12:56:18 · 208 阅读 · 0 评论 -
STL中常用容器——string容器
概述:原创 2021-02-19 10:18:04 · 188 阅读 · 0 评论 -
STL中的迭代器举例详解
介绍了STL中的迭代器访问容器和迭代器配合算法去访问容器,容器介绍了存储基础类型的容器和存储自定义类型的容器以及存储容器的容器。原创 2021-02-19 08:00:10 · 557 阅读 · 0 评论 -
C语言中的位操作学习总结
概述:在学习一些嵌入式设备特别是单片机的时候,经常会用到一些逻辑操作(操作寄存器),所以免不了使用一些位操作运算符。一些常用道德位操作运算符如下:比如我们操作一个寄存器的时候我们如果想要把某一位置一,并且不能影响到别的bit位时,我们就不能直接给一个二进制数,比如我们需要把bit5置1,就不能直接让寄存器的值等于0x20因为如果这样的话,我们相当于给其他的位置也赋值了。所以就只能使用TEST |= 0X20;位与&在寄存器操作的时候采用位与运算的时候和1相与值不变,和0相与值必为原创 2020-11-21 02:44:25 · 222 阅读 · 0 评论 -
C++中的STL简单介绍
一,STL基础概念STL(Standard Template Library,标准模板库),是惠普实验室开发的一系列软件的 统 称。现在主要出现在 c++中,但是在引入 c++之前该技术已经存在很长时间 了。STL 从广义上分为: 容器(container) 算法(algorithm) 迭代器(iterator),容器 和算法之间通过迭代器进行无缝连接。STL 几乎所有的代码都采用了模板类或者 模板函数,这相比传统的由函数和类组成的库来说提供了更好的代码重用机会。 STL(Standard Templa原创 2021-02-18 18:50:41 · 7927 阅读 · 1 评论 -
C++语言中的异常
概述:处理一个程序异常的基本思想是让一个函数在发现了自己无法处理的错误时抛出(throw)一个异常,然后它 的(直接或者间接)调用者能够处理这个问题。也就是《C++ primer》中说的:将 问题检测和问题处理相分离。 一种思想:在所有支持异常处理的编程语言中(例 如 java),要认识到的一个思想:在异常处理过程中,由问题检测代码可以抛出一 个对象给问题处理代码,通过这个对象的类型和内容,实际上完成了两个部分的通 信,通信的内容是“出现了什么错误”。当然,各种语言对异常的具体实现有着或多 或少的区别,但原创 2020-11-21 02:06:09 · 235 阅读 · 0 评论 -
C++语言中的类型转换(静态,动态,常量)
概述:类型转换(cast)是将一种数据类型转换成另一种数据类型。例如,如果将一个整型 值赋给一个浮点类型的变量,编译器会暗地里将其转换成浮点类型。 转换是非常 有用的,但是它也会带来一些问题,比如在转换指针时,我们很可能将其转换成一 个比它更大的类型,但这可能会破坏其他的数据。 应该小心类型转换,因为转换 也就相当于对编译器说:忘记类型检查,把它看做其他的类型。无论什么原因,任何一个程序如果使用很多类型转换都值得怀疑. 标准 c++提供了一个显示的转换的语法,来替代旧的 C 风格的类型转换。 使用 C原创 2020-11-15 13:28:00 · 604 阅读 · 0 评论 -
C++语言中的模板——类模板
概述了类模板的基本概念和继承,;类成员函数类内和类外实现,类模板和友元函数原创 2020-11-15 00:42:28 · 528 阅读 · 0 评论 -
C++语言中的模板——函数模板
模板概述:c++提供了函数模板(function template.)所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体制定,用一个虚拟的类型来代表。这个通用函数 就成为函数模板。凡是函数体相同的函数都可以用这个模板代替,不必定义多个函 数,只需在模板中定义一次即可。在调用函数时系统会根据实参的类型来取代模板 中的虚拟类型,从而实现不同函数的功能。c++提供两种模板机制:函数模板和类模板 类属 - 类型参数化,又称参数模板函数模板函数模板的引入:如果我们需要实现两个变量相交换:整原创 2020-11-14 23:20:21 · 462 阅读 · 1 评论 -
C++语言中的多态特性
概述了C++语言中的静态多态和动态多态,详述了虚函数和虚函数表,以及举例了很多简单的程序demo原创 2020-11-14 21:52:47 · 631 阅读 · 0 评论 -
C++的运算符重载(四)——其他运算符重载和总结
简单以代码实现了别的运算符,以及一些注意事项,还有总结,最后写了一个字符串类的封装.....原创 2020-11-10 21:11:47 · 199 阅读 · 0 评论 -
C++的运算符重载(三)——智能指针
概述:原创 2020-11-09 14:45:58 · 204 阅读 · 0 评论 -
C++中的运算符重载(二)——自增自减运算符重载
概述:原创 2020-11-08 23:41:16 · 948 阅读 · 0 评论 -
C++中的运算符重载(一)——运算符重载的概念
概述:介绍了运算符重载的基本概念以及举例了加号运算符和左移运算符原创 2020-11-06 09:39:11 · 478 阅读 · 0 评论 -
C++语言中的友元概念
友元概述:类的主要特点之一是数据隐藏,即类的私有成员无法在类的外部(作用域之外)访 问。但是,有时候需要在类的外部访问类的私有成员,怎么办? 解决方法是使用 友元函数,友元函数是一种特权函数,c++允许这个特权函数访问私有成员。这一 点从现实生活中也可以很好的理解: 比如你的家,有客厅,有你的卧室,那么你 的客厅是 Public 的,所有来的客人都可以进去,但是你的卧室是私有的,也就是 说只有你能进去,但是呢,你也可以允许你的闺蜜好基友进去。 程序员可以把一 个全局函数、某个类中的成员函数、甚至整个类声原创 2020-11-05 20:43:26 · 167 阅读 · 0 评论 -
C++中的菱形继承和虚继承简述·
多继承概念:我们可以从一个类继承,我们也可以能同时从多个类继承,这就是多继承。但是由 于多继承是非常受争议的,从多个类继承可能会导致函数、变量等同名导致较多的 歧义。如以下所示,访问变量时候要加上作用域,表示访问的是哪个变量和函数#include <iostream>#include <string>using namespace std;class Test_A{public: void fun1() { cout << "Test_A原创 2020-11-05 14:47:26 · 144 阅读 · 0 评论 -
C++语言中的继承和派生
概述:c++最重要的特征是代码重用,通过继承机制可以利用已有的数据类型来定义新的 数据类型,新的类不仅拥有旧类的成员,还拥有新定义的成员。 一个 B 类继承于 A 类,或称从类 A 派生类 B。这样的话,类 A 成为基类(父类), 类 B 成为派生 类(子类)。 派生类中的成员,包含两大部分: 一类是从基类继承过来的,一类 是自己增加的成员。 从基类继承过过来的表现其共性,而新增的成员体现了其个 性。继承机制允许程序员在保持原有的特性基础上进行扩展,增加功能,这样产生新的类,称作是派生类。继承呈现了面向原创 2020-11-03 21:11:40 · 242 阅读 · 1 评论 -
C++类的静态成员和this指针
详细说明了c++中类中的静态成员,包括静态成员变量和静态成员函数,还有一个实现类中变量和函数的桥梁this指针。原创 2020-11-01 00:47:36 · 2284 阅读 · 1 评论 -
C++语言对象——动态对象
动态对象概述:当我们创建数组的时候,总是需要提前预定数组的长度,然后编译器分配预定长度 的数组空间,在使用数组的时,会有这样的问题,数组也许空间太大了,浪费空 间,也许空间不足,所以对于数组来讲,如果能根据需要来分配空间大小再好不 过。所谓动态的意思意味着不确定性。 而在程序运行中 可以创建和销毁对象是最基本的要求。当然 c 早就提供了动态内存分配(dynamic memory allocation),函数 malloc 和 free 可以在运行时从堆中分配存储单元。 然 而这些函数在 c++中不能很好原创 2020-10-31 19:56:23 · 1259 阅读 · 1 评论 -
C++语言对C语言的扩展(一)
概述:众所周知c++语言是面向对象语言,而C语言是面向过程语言,过程和对象语言有什么主要区别呢?面向过程系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录前言一、面向过程和面向对象的概念二、c++对c的拓展1.1作用域运算符1.2C++命名空间总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发原创 2020-10-26 00:27:45 · 535 阅读 · 0 评论 -
C++语言对C语言的扩展(二)
内联函数的和宏函数的概念:宏函数(带参数的宏)的缺点: 第一个在c中也会出现,宏看起来像一个函数调用,但是会有隐藏一些难以发现的错误。 第二个问题是c++特有的,预处理器不允许访问类的成员,也就是说预处理器宏不能用作类 的成员函数内联函数:内联函数为了继承宏函数的效率,没有函数调用时开销,然后又可以像普通函数 那样,可以进行参数,返回值类型的安全检查,又可以作为成员函数 内联函数:是一个真正的函数。函数的替换 发生在编译阶段如以下代码:inline int my_add(int a,int b){原创 2020-10-27 22:34:41 · 210 阅读 · 0 评论 -
C++语言的对象——构造和析构
析构函数和构造函数概述L:原创 2020-10-28 17:33:38 · 217 阅读 · 1 评论