![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C/C++
C++
出类拔萃~
这个作者很懒,什么都没留下…
展开
-
编译链接(预编译,编译,汇编,链接)
编译链接一个程序要变成一个进程需要将指令和数据加载进内存中就可以了,而在变成进程的过程需要五步来完成所有的操作系统只识别机器码,也就是0,1码,即二进制我们所学的C/C++等语言都属于高级语言越接近机器语言的就是低级语言比如汇编语言在高级语言转换成机器码的过程中,并不是直接变成机器语言,而是先变成汇编语言,在变成机器码一、预编译(生成.i文件)1.、删除#define并作文本替换2...原创 2020-02-08 16:11:38 · 1068 阅读 · 0 评论 -
虚拟地址
虚拟地址虚拟地址是程序运行在保护模式下,这样程序访问存储器所使用的逻辑地址称为虚拟地址。那为什么需要虚拟地址呢我们要说到寻址方式寻址:根据指令内容确定操作数地址的过程,称为寻址在16位的cup或者8086cpu的时候,他寻址方式的模式为:实模式而在32位或者64位,寻址方式的模式为:保护模式实模式我们先来看一下实模式下程序的运行例:如图,在实模式中,A程序和B程序从磁盘直接加...原创 2020-02-06 18:08:59 · 7543 阅读 · 1 评论 -
STL- 常用拷贝和替换、算术生成、集合算法
STL常用拷贝和替换算法copy功能描述:容器内指定范围的元素拷贝到另一容器中函数原型copy(iterator beg, iterator end, iterator dest);// 按值查找元素,找到返回指定位置迭代器,找不到返回结束迭代器位置// beg 开始迭代器// end 结束迭代器// dest 目标起始迭代器注意:利用copy算法在拷贝时,目标容器记得提前开辟空间replace功能描述:将容器内指定范围的旧元素修改为新元素函数原型:replace(itera原创 2020-08-09 10:29:05 · 233 阅读 · 0 评论 -
STL- 常用遍历、查找、排序算法
STL- 常用算法概述:算法主要是由头文件 组成。 是所有STL头文件中大的一个,范围涉及到比较、 交换、查找、遍历操作、复制、修改等等 体积很小,只包括几个在序列上面进行简单数学运算的模板函数 定义了一些模板类,用以声明函数对象。常用遍历算法for_each功能描述:实现遍历容器函数原型:for_each(iterator beg, iterator end, _func);// 遍历算法 遍历容器元素// beg 开始迭代器// end 结束迭代器// _func原创 2020-08-08 17:30:27 · 293 阅读 · 0 评论 -
函数对象/内建函数对象
函数对象概念:重载函数调用操作符的类,其对象常称为函数对象 函数对象使用重载的()时,行为类似函数调用,也叫仿函数本质:函数对象(仿函数)是一个类,不是一个函数函数对象使用特点:函数对象在使用时,可以像普通函数那样调用, 可以有参数,可以有返回值 函数对象超出普通函数的概念,函数对象可以有自己的状态 函数对象可以作为参数传递示例:#include <string>#include <iostream>using namespace std; //1、函数对原创 2020-08-08 16:15:41 · 230 阅读 · 0 评论 -
map/ multimap容器
map简介:map中所有元素都是pair pair中第一个元素为key(键值),起到索引作用,第二个元素为value(实值) 所有元素都会根据元素的键值自动排序本质:map/multimap属于关联式容器,底层结构是用红黑树实现。优点:可以根据key值快速找到value值map和multimap区别: map不允许容器中有重复key值元素 multimap允许容器中有重复key值元素map构造和赋值功能描述:对map容器进行构造和赋值操作函数原型:构造map<T1, T2&g原创 2020-08-08 13:17:07 · 180 阅读 · 0 评论 -
set/multiset 容器
set简介:所有元素都会在插入时自动被排序本质:set/multiset属于关联式容器,底层结构是用红黑树实现。set和multiset区别: set不允许容器中有重复的元素 multiset允许容器中有重复的元素set构造和赋值功能描述:创建set容器以及赋值构造:set<T> st; //默认构造函数: set(const set &st); //拷贝构造函数赋值:set& operator=(const原创 2020-08-07 14:10:28 · 397 阅读 · 0 评论 -
list容器
list基本概念功能:将数据进行链式存储链表(list)是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接实现的链表的组成:链表由一系列结点组成结点的组成:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域STL中的链表是一个双向循环链表注意:由于链表的存储方式并不是连续的内存空间,因此链表list中的迭代器只支持前移和后移,属于双向迭代器list的优点:采用动态存储分配,不会造成内存浪费和溢出 链表执行插入和删除操作十分方便,修改指针即可,不需要移原创 2020-08-07 13:18:19 · 112 阅读 · 0 评论 -
Stack和Queue容器
stack概念:stack是一种先进后出(First In Last Out,FILO)的数据结构,它只有一个出口栈中只有顶端的元素才可以被外界使用,因此栈不允许有遍历行为栈中进入数据称为 — 入栈 push栈中弹出数据称为 — 出栈 popstack 常用接口功能描述:栈容器常用的对外接口构造函数:stack<T> stk; //stack采用模板类实现, stack对象的默认构造形式 stack(const stack &stk);原创 2020-08-06 14:01:13 · 142 阅读 · 0 评论 -
deque容器
deque容器功能:双端数组,可以对头端进行插入删除操作deque与vector区别:vector对于头部的插入删除效率低,数据量越大,效率越低 deque相对而言,对头部的插入删除速度回比vector快 vector访问元素时的速度会比deque快,这和两者内部实现有关deque内部工作原理: deque内部有个中控器,维护每段缓冲区中的内容,缓冲区中存放真实数据 中控器维护的是每个缓冲区的地址,使得使用deque时像一片连续的内存空间注意:deque容器的迭代器也是支持随机访问的deq原创 2020-08-06 11:57:54 · 207 阅读 · 0 评论 -
Vector容器
vector功能:vector数据结构和数组非常相似,也称为单端数组vector与普通数组区别: 不同之处在于数组是静态空间,而vector可以动态扩展vector容器的迭代器是支持随机访问的迭代器动态扩展:并不是在原空间之后续接新空间,而是找更大的内存空间,然后将原数据拷贝新空间,释放原空间vector构造函数功能描述:创建vector容器函数原型vector<T> v; //采用模板实现类实现,默认构造函数 vector(v原创 2020-08-05 18:49:38 · 414 阅读 · 0 评论 -
String
string基本概念本质:string是C++风格的字符串,而string本质上是一个类string和char * 区别:char * 是一个指针 string是一个类,类内部封装了char*,管理这个字符串,是一个char型的容器。特点:string 类内部封装了很多成员方法例如:查找find,拷贝copy,删除delete 替换replace,插入insert string管理char所分配的内存,不用担心复制越界和取值越界等,由类内部进行负责string构造函数构造函数原型:stri原创 2020-08-05 13:17:06 · 95 阅读 · 0 评论 -
初见STL
STL长久以来,软件界一直希望建立一种可重复利用的东西 C++的面向对象和泛型编程思想,目的就是复用性的提升 大多情况下,数据结构和算法都未能有一套标准,导致被迫从事大量重复工作 为了建立数据结构和算法的一套标准,诞生了STL在C++标准中,STL被组织为下面的13个头文件:algorithm、deque、functional、iterator、vector、list、map、memory.h、numeric、queue、set、stack和utility。基本概念STL(Standard Temp原创 2020-08-04 19:47:29 · 129 阅读 · 0 评论 -
递归与简单的栈
一、递归递归:是指函数/过程/子程序在运行过程序中直接或间接调用自身而产生的重入现象 通俗来说就是一个函数不断地调用自己的过程,直到调用到已知的自己。 优点:使用递归解决问题,思路清晰,代码少。 以C语言经典题目斐波那契数列为例,用递归将其实现源代码:#include <stdio.h>int Fibona(int n){ if(n==1||n==2) { retu...原创 2019-09-27 14:32:48 · 226 阅读 · 0 评论 -
指针与二维数组
一、二维数组通过学习一维数组我们不难得到二维数组,从比较好理解的方面来说其实二维数组在一维数组的每一行都加上了一列形成了一个矩阵的形式。定义的方式: 类型名 数组名[行的长度][列的长度];int arr[n][m]; //n,m都为常数在二维数组中,有一些基本的操作,就比如行列互换举个例子:把crr[3][4]所存储的数字行列交换转换成四行三列这里附上源代码:#incl...原创 2019-09-21 12:36:05 · 125 阅读 · 0 评论 -
C语言自我实现itoa函数
自我实现itoa函数itoa是一个可以将数字转化成字符串的函数,在直接调用此函数时需要#include <stdlib.h>数字转化成字符串算法实现首先将我们需要将数字的每一位算出,再将每一位数字转化成字符类型,最后输出至于如何算出数字每一位:https://blog.csdn.net/wfea_lff/article/details/93664132将数字转化成字符类型就需...原创 2019-07-25 11:14:22 · 629 阅读 · 0 评论 -
C语言自我实现atoi函数
自我实现atoi函数atoi是一个可以将字符串转化成数字的函数且遇到非数字字符提前结束,还要处理符号和去掉最前面的空格,在直接调用此函数时需要#include <stdlib.h>在自我实现atoi时主要解决两大问题1.如何将字符串转换成数字2.如何将限制条件实现/*******************************************************...原创 2019-07-14 11:44:23 · 412 阅读 · 1 评论 -
初识指针(C语言指针简单用法)
初识指针在大部分人眼中C语言,指针便是难以跨越的难关之一,有许多学习C语言的萌新在学习完指针之后便放弃了,我们今天就来和指针较量一番!!!本人认为学不好指针的两大问题:1.没有理解指针2.学习了但不知道有什么用现在我们先来看看第一个问题1.没有理解指针*刚学习到指针都会是云里雾里的,因为刚接触到一个新的名词都是一脸蒙bi的状态指针通俗来讲就是用来储存地址,定义时用*来声明指针,例如...原创 2019-07-07 15:54:00 · 298 阅读 · 0 评论 -
关于C语言如何处理数字(给一个不多于5位的正整数,要求:1.求它是几位数;2.逆序打印出各位数字;3.正序打印出各位数字。)
例题:给一个不多于5位的正整数,要求:1.求它是几位数;2.逆序打印出各位数字;3.正序打印出各位数字。前提说明: 从题中我们可以看出题目中对整数的位数已经限制为5位,我们在这里先不管这个限制,无论输入什么数字都将其按照后面的问题输出1.求它是几位数?我们平时在观察到一个数字的时候,要得到其位数我们会选择直接数出来,但计算机并不能拥有人类直接数数的功能。那计算机如何实现呢? 在这里我...原创 2019-06-26 09:46:28 · 4200 阅读 · 0 评论