
基本知识
文章平均质量分 94
星辰浩宇
路在脚下
展开
-
git配置及常见命令
首先我们需要本地Git与远程GitHub连接的建立,只有将Git本地与远程的GitHub建立了连接以后我们本地的项目才能上传至远程服务器**配置流程:**1、在git中配置全局的github账号信息:git config --global user.name "username"git config --global user.email "email"2、Git终端的配置生成公钥文件,用来连接github。在git终端输入如下命令,然后连续敲3个回车即可:ssh-keygen -t rs原创 2021-10-30 12:01:09 · 1413 阅读 · 0 评论 -
C++和C的区别
设计思想上:C++是面向对象的语言,而C是面向过程的结构化编程语言语法上:C++具有封装、继承和多态三种特性C++相比C,增加多许多类型安全的功能,比如强制类型转换、C++支持范式编程,比如模板类、函数模板等...原创 2019-08-30 17:28:15 · 136 阅读 · 0 评论 -
c++ 整形浮点字符串 类型转换
一、C风格字符串1.<stdlib.h>中的转换函数atoi atol atollitoa ltoa ultoa lltoaatof ecvt fcvt gcvtstrtol strtoul strtoll strtod2.sprintf sscanf (功能更强大)二、std::string1.标准库转换函数(using namespace std;)to...原创 2019-08-11 15:46:38 · 403 阅读 · 0 评论 -
C++中的swap函数
C++中的swap函数:交换函数好处:不用担心交换变量精度的缺失,无需构造临时变量,不会增加空间复杂度swap 包含在命名空间std 里面swap(a,b);(交换两个数)swap(a[i] = b[j]);(交换两个位置上的变量)...原创 2019-08-10 09:23:32 · 32808 阅读 · 2 评论 -
NULL与nullptr的关系
1)0是int型的字面值常量2) NULL 是预处理变量,定义在 cstdlib 中,其值是03) nullptr 是 nullptr_t 类型的字面值。传统意义上来说,c++把NULL、0视为同一种东西,有些编译器将NULL定义为 ((void*)0),有些将其定义为0.c++不允许直接将void*隐式的转化为其他类型,但是如果NULL被定义为 ((void*)0),...原创 2019-08-09 14:18:05 · 350 阅读 · 0 评论 -
c++中传值,传指针和传引用区别和联系
概念指针:指针就是一个变量,如果非要说是一个特殊的变量也不为过,因为指针的初始化和解引用等不同的操作方式而已。就内存的分布来说,指针和一个变量在内存中存放是没有任何区别的,无非指针存放的是变量的地址。传值:传值无非就是实参拷贝传递给形参,单向传递(实参->形参),赋值完毕后实参就和形参没有任何联系,对形参的修改就不会影响到实参。传地址:为什么说传地址也是一种传值呢?因为传地址是把...原创 2019-08-02 11:18:04 · 500 阅读 · 0 评论 -
c++ pair 用法详解
C++pair类型标准库类型--pair类型定义在utility头文件中定义1、pair的创建和初始化pair包含两个数值,与容器一样,pair也是一种模板类型。但是又与之前介绍的容器不同,在创建pair对象时,必须提供两个类型名,两个对应的类型名的类型不必相同pair<string,string>anon;pair<string,int>word_...转载 2019-08-01 07:03:11 · 462 阅读 · 0 评论 -
高级语言分类
高级语言根据用途不同有很多分类,主要分为编译型语言和解释型语言。当然,也有二者的混合语言。原创 2019-08-01 07:03:28 · 3752 阅读 · 0 评论 -
编程与编程语言
原创 2019-08-01 07:03:39 · 933 阅读 · 0 评论 -
c++ bitset类用法
有些程序要处理二进制位的有序集,每个位可能包含的是0(关)或1(开)的值。位是用来保存一组项或条件的yes/no信息(有时也称标志)的简洁方法。标准库提供了bitset类使得处理位集合更容易一些。要使用bitset类就必须要包含相关的头文件。在本书提供的例子中,假设都使用了std::bitset的using声明:#include <bitset>using std::bi...转载 2019-07-26 16:18:32 · 612 阅读 · 0 评论 -
后缀表达式
一、后缀表达式求值后缀表达式也叫逆波兰表达式,其求值过程可以用到栈来辅助存储。假定待求值的后缀表达式为:6 5 2 3 + 8 * + 3 + *,则其求值过程如下:1)遍历表达式,遇到的数字首先放入栈中,2)接着读到“+”,则弹出3和2,执行3+2,计算结果等于5,并将5压入到栈中。3)读到8,将其直接放入栈中。4)读到“*”,弹出8和5,执行8...转载 2019-07-22 16:15:48 · 16551 阅读 · 0 评论 -
计算机的启动过程
最早的时候,工程师们用它来比喻,计算机启动是一个很矛盾的过程:必须先运行程序,然后计算机才能启动,但是计算机不启动就无法运行程序!就像"pull oneself up by one's bootstraps"字面意思是"拽着鞋带把自己拉起来",这当然是不可能的事情。计算机的整个启动过程分成四个阶段。一, 第一阶段:BIOS上个世纪70年代初,"只读内存"(read-only m...转载 2019-08-24 20:07:39 · 489 阅读 · 0 评论 -
static关键字的作用
1. 全局静态变量在全局变量前加上关键字static,全局变量就定义成一个全局静态变量.静态存储区,在整个程序运行期间一直存在。初始化:未经初始化的全局静态变量会被自动初始化为0(自动对象的值是任意的,除非他被显式初始化);作用域:全局静态变量在声明他的文件之外是不可见的,准确地说是从定义之处开始,到文件结尾。2. 局部静态变量在局部变量之前加上关键字static,局部变...原创 2019-08-24 20:42:28 · 232 阅读 · 0 评论 -
STL中map与unordered_map
1、Map映射,map 的所有元素都是 pair,同时拥有实值(value)和键值(key)。pair 的第一元素被视为键值,第二元素被视为实值。所有元素都会根据元素的键值自动被排序。不允许键值重复。底层实现:红黑树适用场景:有序键值对不重复映射2、Multimap多重映射。multimap 的所有元素都是 pair,同时拥有实值(value)和键值(key)。pair 的第一元素...原创 2019-09-01 07:37:33 · 257 阅读 · 0 评论 -
进程与线程
基本概念:进程是对运行时程序的封装,是系统进行资源调度和分配的的基本单位,实现了操作系统的并发;线程是进程的子任务,是CPU调度和分派的基本单位,用于保证程序的实时性,实现进程内部的并发;线程是操作系统可识别的最小执行和调度单位。每个线程都独自占用一个虚拟处理器:独自的寄存器组,指令计数器和处理器状态。每个线程完成不同的任务,但是共享同一地址空间(也就是同样的动态内存,映射文件,目标代码等...原创 2019-08-30 17:29:15 · 117 阅读 · 0 评论 -
STL迭代器删除元素
1、对于序列容器vector,deque来说,使用erase(itertor)后,后边的每个元素的迭代器都会失效,但是后边每个元素都会往前移动一个位置,但是erase会返回下一个有效的迭代器;2.对于关联容器map set来说,使用了erase(iterator)后,当前元素的迭代器失效,但是其结构是红黑树,删除当前元素的,不会影响到下一个元素的迭代器,所以在调用erase之前,记录下一个元素...原创 2019-08-30 17:29:00 · 211 阅读 · 0 评论 -
数组和指针的区别
指针 数组 保存数据的地址 保存数据 间接访问数据,首先获得指针的内容,然后将其作为地址,从该地址中提取数据 直接访问数据, 通常用于动态的数据结构 通常用于固定数目且数据类型相同的元素 通过Malloc分配内存,free释...原创 2019-08-30 17:28:43 · 87 阅读 · 0 评论 -
STL里resize和reserve的区别
resize():改变当前容器内含有元素的数量(size()),eg: vector<int>v; v.resize(len);v的size变为len,如果原来v的size小于len,那么容器新增(len-size)个元素,元素的值为默认为0.当v.push_back(3);之后,则是3是放在了v的末尾,即下标为len,此时容器是size为len+1;reserve():...原创 2019-08-30 17:28:29 · 338 阅读 · 0 评论 -
vector和list的区别
概念:1)Vector连续存储的容器,动态数组,在堆上分配空间底层实现:数组两倍容量增长:vector 增加(插入)新元素时,如果未超过当时的容量,则还有剩余空间,那么直接添加到最后(插入指定位置),然后调整迭代器。如果没有剩余空间了,则会重新配置原有元素个数的两倍空间,然后将原空间元素通过复制的方式初始化新空间,再向新空间增加元素,最后析构并释放原空间,之前的迭代器会失效...原创 2019-09-01 07:39:35 · 8644 阅读 · 2 评论 -
STL中迭代器的作用,有指针为何还要迭代器
1、迭代器Iterator(迭代器)模式又称Cursor(游标)模式,用于提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。或者这样说可能更容易理解:Iterator模式是运用于聚合对象的一种模式,通过运用该模式,使得我们可以在不知道对象内部表示的情况下,按照一定顺序(由iterator提供的方法)访问聚合对象中的各个元素。由于Iterator模式的以上特性:与聚...原创 2019-08-29 18:47:08 · 562 阅读 · 0 评论 -
map和set有什么区别,分别又是怎么实现的
map和set都是C++的关联容器,其底层实现都是红黑树(RB-Tree)。由于 map 和set所开放的各种操作接口,RB-tree 也都提供了,所以几乎所有的 map 和set的操作行为,都只是转调 RB-tree 的操作行为。map和set区别在于:(1)map中的元素是key-value(关键字—值)对:关键字起到索引的作用,值则表示与索引相关联的数据;Set与之相对就是关键字的简...原创 2019-08-29 18:46:52 · 1313 阅读 · 0 评论 -
STL有什么基本组成
STL主要由:以下几部分组成:容器、迭代器、仿函数、算法、分配器、配接器他们之间的关系:分配器给容器分配存储空间 算法通过迭代器获取容器中的内容 仿函数可以协助算法完成各种操作 配接器用来套接适配仿函数...原创 2019-09-01 07:38:51 · 2578 阅读 · 0 评论 -
GCC与G++区别
gcc和g++的区别总结:gcc: GNU C Compilerg++: GNU C++ Compiler共同点:均属于the GNU Compiler Collection,gcc是鼻祖,后来才有了g++g++ == gcc -xc++ -lstdc++ -shared-libgcc(gcc后面两项都是链接选项,表示g++要相比gcc链接其他库函数)##差异点:1.g+...转载 2019-07-26 11:55:49 · 545 阅读 · 0 评论 -
关于C++中使用set_union、set_intersection、set_difference,set_symmetric_difference、merge的总结
STL set中有set_union(取两集合并集)、set_intersection(取两集合交集)、set_difference(取两集合差集)。1、这几个函数的参数一样。2、set_union(x1.begin(), x1.end(), x2.begin(), x2.end(), inserter(x, x.begin())),前两个参数是集合x1的头尾,再依次是集合x2的头尾,最后一...原创 2019-08-03 18:00:44 · 1712 阅读 · 0 评论 -
图的最短路径:Dijkstra、Bellman-Ford、SPFA、Floyd
图的表示方法最常用的表示图的方法是邻接矩阵与邻接表。邻接矩阵表示法设G是一个有n(n>0)个顶点的图,V(G)={v1, v2, …, vn},则邻接矩阵AG是一个n阶二维矩阵。在该矩阵中,如果vi至vj有一条边,则(i, j)项的值为1,否则为0,即: 邻接矩阵的实现很简单:int edge[n][n]={0};for(...){ ... ...原创 2019-07-24 20:19:13 · 357 阅读 · 0 评论 -
C++利用stringstream进行类型转换
利用STL中sstream库的字符串流(stringstream)可以非常方便地进行类型转换,尤其是字符串和数字的转换。例:整型和字符串类型的相互转化#include <sstream> //开头记得加上这个 //整型转换为string类型string int2string(int num){ stringstream ss; ss<...转载 2019-07-24 19:28:24 · 256 阅读 · 0 评论 -
分割字符串的两种方法
方法一:利用string中的substr函数写一个分割字符串的函数void tostr(string line,char ch,int idd){//以ch分割字符串 int t; queue<string>st; for(t = line.find(ch); t != string::npos; t = line.find(ch)) { s...原创 2019-07-24 19:22:55 · 1937 阅读 · 0 评论 -
ASCII 码表
下面的 ASCII 码表包含数值在0-127之间的字符的十进制、八进制以及十六进制表示.十进制 八进制 十六进制 字符 描述 0 0 00 NUL 1 1 01 SOH start of header 2 2 02 STX start of text 3 3 03 ...原创 2019-07-29 18:29:28 · 471 阅读 · 0 评论 -
github新手使用
1、首先要先在github的官网注册一个属于自己的账号。https://github.com/2、注册完成后需要一些简单的设置,先创建一个属于自己的仓库,repository3、创建仓库4、如何让自己电脑上的代码同步到Github上所创建的库当中?在这里,需要安装git的命令工具,Git Bash嗯,就是这样的一个工具: 去Git的官网安装适合自己...转载 2019-07-18 09:08:07 · 204 阅读 · 0 评论 -
IXP
Internet eXchange Point(IXP)即互联网交换中心,亦称为IX。互联网Internet是由众多的网络互相连接而形成的全球性网络,互联网交换中心(IXP、IX)即负责这些不同的网络之间互相通信的交换点,是互联网的关键基础设施。服务范围互联网交换中心(Internet Exchange Point)是不同电信运营商之间为连通各自网络而建立的集中交换平台,互联网交换中...转载 2019-07-13 08:41:44 · 4542 阅读 · 0 评论 -
集线器
集线器的英文称为“Hub”。“Hub”是“中心”的意思,集线器的主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上。它工作于OSI(开放系统互联参考模型)参考模型第一层,即“物理层”。集线器与网卡、网线等传输介质一样,属于局域网中的基础设备,采用CSMA/CD(即带冲突检测的载波监听多路访问技术)介质访问控制机制。集线器每个接口简单的收发比特,收...转载 2019-07-13 08:20:51 · 2530 阅读 · 0 评论 -
PIO模式和DMA模式的区别
硬盘和内存之间数据传送的两种方式:一是PIO模式,二是DNA模式 PIO模式下通过CPU来控制硬盘和内存之间的数据传输,是一种通过CPU执行I/O端口指令来进行数据的读写的数据交换模式。; DMA模式下,CPU并不全程参与数据的传送工作,只需下达命令即可。DMA方式下有控制器和通道,CPU只须向DMA控制器下达指令,让DMA控制器来处理数据的传送...原创 2019-06-11 17:40:32 · 9364 阅读 · 1 评论 -
IDE和SCSI硬盘的区别
IDE硬盘 在转数和传输速度等方面都远不及服务器专用的SCSI硬盘,且IDE硬盘最大的缺点是在读写操作时都大量消耗CPU资源,最简单的例子,大家自己的机器都是IDE的,在复制数据时,CPU占用一般60-70%以上还多。这时同时做别的事会很慢。您想,如果做虚拟主机,100多个用户在同时读写,速度会如何呢?而SCSI硬盘就不同,因为它有自己的“处理器”,在大量数据读写时,自己的处理器会处理,占用CP...转载 2019-06-11 17:28:43 · 1012 阅读 · 1 评论 -
优先队列 priority_queue 详解
优先队列没有back()操作一个优先队列声明的基本格式是:priority_queue<结构类型> 队列名;priority_queue <int> i;priority_queue <double> d;priority_queue <node> q;//node是一个结构体//结构体里重载了‘<’小于符号priority...原创 2019-07-24 20:32:24 · 233 阅读 · 0 评论 -
关于lower_bound( )和upper_bound( )的常见用法
lower_bound( )和upper_bound( )都是利用二分查找的方法在一个排好序的数组中进行查找的。在从小到大的排序数组中,lower_bound( begin,end,num):从数组的begin位置到end-1位置二分查找第一个大于或等于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。upper_...转载 2019-07-25 08:26:22 · 106 阅读 · 0 评论 -
max_element和min_element的用法
简单用法如下:int i=max_element(a,a+n)-a;c++标准库自带的求一个序列中最大元素的函数,并返回一个迭代器返回第一个最大值所在数组中的位置printf("%d\n",*max_element(a,a+n));可以打印出最大值同时 min_element的用法同上,但是都有一个共同点,就是找到的位置都是第一个最大(小)的元素,即存在多个相同...原创 2019-07-25 08:37:04 · 360 阅读 · 0 评论 -
二分搜索——(最小值最大化和最大值最小化)
有一类常见问题叫做最小值最大化或者最大值最小化。这类问题一般是用二分搜索来解决。 首先二分搜索解决的问题必须具备单调性这个性质,这是使用二分搜索的必要条件,我们分析两个问题。 1.最小值最大化:我们假设x为最大的最小值,那么x-1是满足条件的,但他并不满足最大,x+1是不满足条件的,假设我们左边界是L,右边界是R,我们二分一个答案ans,ans为最后一个满足条件的数,我...转载 2019-07-26 07:48:13 · 892 阅读 · 0 评论 -
二分搜索
这里就不解释什么是二分搜索了,这里将会介绍4种二分搜索,和二分搜索常用来解决的最小值最大化或者最大值最小化的问题,我们都知道使用二分的最基本条件是,我们二分的序列需要有单调性,这里的序列是广义性如:1.一个排好序的数组; 2.一个区间[L,R);3.其他(暂时想不到)。所以下面介绍的时候会用v来代表我们二分的目标,用第一个大于v,第一个大于等于v,最后一个小于v,最后一个小于等于v来描述...转载 2019-07-26 07:40:02 · 99 阅读 · 0 评论 -
C++ set用法总结
顺序容器包括vector、deque、list、forward_list、array、string,所有顺序容器都提供了快速顺序访问元素的能力。关联容器包括set、map关联容器和顺序容器有着根本的不同:关联容器中的元素是按关键字来保存和访问的。与之相对,顺序容器中的元素是按它们在容器中的位置来顺序保存和访问的。关联容器不支持顺序容器的位置相关的操作。原因是关联容器中元素是根据关键字存...转载 2019-07-22 07:50:00 · 8290 阅读 · 0 评论 -
Kruskal最小生成树算法
参考代码如下:#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int MAX_N = 100000; // 最大顶点数const int MAX_M = 100000...原创 2019-07-25 21:16:19 · 159 阅读 · 0 评论