
C++
文章平均质量分 79
长相忆兮长相忆
一个爱生活爱学习的小学生。
展开
-
【C++】C/C++代码生成C/C++可执行程序
1、首先,GCC与G++分别是GNU 的C、C++编译器, GCC与G++在执行编译工作的时候,总共需要4步:1、预处理,生成 .i 的文件[预处理器cpp] 2、将预处理后的文件转换成汇编语言,生成文件 .s [编译器egcs] 3、有汇编变为目标代码(机器代码)生成 .o 的文件[汇编器as] 4、连接目标代码,生成可执行程序 [链接器ld]这里以一个能在编译器下运行的C代码“ma...原创 2020-01-20 11:26:55 · 730 阅读 · 0 评论 -
【数据结构】二叉树的遍历
二叉树的遍历大致可分为先序遍历、中序遍历、后序遍历和层次遍历四种。具体的实现原理都比较简单,这里不再描述,现在给出具体的遍历算法。本文给出了二叉树遍历的递归算法和非递归算法,这样有助于对照了解。二叉树的结构体 typedef struct BinTreeNode { int data; // 默认结点中存储整型数据 struct BinTreeNo原创 2016-08-26 17:13:02 · 749 阅读 · 0 评论 -
【数据结构】数据结构中常用的排序算法
排序是数据结构中重要的内容,也是面试过程中经常涉及的部分。在这里,我给出几个基本的排序算法的C/C++代码。对于具体的排序的原理,不做太多的介绍,随便找一本数据结构教材都能弄清楚。声明:1、以下给出的代码并没有判断边界条件,只是给出了算法的核心代码,如果遇到具体的问题,应该加以判断。 2、算法实现的是升序排列。1、插入排序1、直接插入排序void InsertSort(int* A, int n)原创 2016-08-26 16:39:18 · 967 阅读 · 0 评论 -
【C++】STL常用容器总结之二:顺序容器
3、顺序容器所谓序列式容器,其中的元素都可序(ordered),但未必有序(sorted)。array为C++语言内置的序列容器,STL另外提供vector、list、deque、stack、queue等等顺序式容器。它们的差别在于访问元素的方式,以及添加或删除元素相关操作的运行代价。 标准库还提供了三种容器适配器(adapter),所谓适配器是根据原始的容器类型所提供的操作,通过定义新的操作接口原创 2016-08-24 23:07:03 · 1272 阅读 · 1 评论 -
【C++】STL常用容器总结之一:容器与迭代器
声明: 1、本博文主要整理自《C++ Primer》和《STL源码剖析》这两本经典书籍。同时,也参考了网络中不少优秀博客,对这些博客的作者表示感谢。 2、由于博主能力有限,对于一些容器的用法可能尚未进行深入研究。因此,本博文若有错误和不足之处,欢迎大家批评指正。 3、本博文仅作学术交流只用,无任何其他用途。言归正传,下面开始介绍C++中的STL容器。1、容器的概念 Standard Temp原创 2016-08-24 22:46:00 · 9812 阅读 · 0 评论 -
【C++】const关键字用法总结
C++关键字const用法,总结了网络和C++ Primer的一些重要知识点,可能还有一些遗漏欢迎补充。CONST是C++中常用的类型修饰符,常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。一、CONST作用二、CONST的使用1、定义常量(1)const修饰变量,以下两种定义形式在本质上是一样的。它的含义是:const修原创 2016-05-28 10:27:52 · 763 阅读 · 0 评论 -
【C++】static关键字用法总结
C++关键字static用法,总结了网络和C++ Primer的一些重要知识点,可能还有一些遗漏欢迎补充。C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。一、面向过程设计中的static1、静态全局变量在全局变量前,加上关键字static,该变量就被定义成为原创 2016-05-28 10:24:56 · 593 阅读 · 0 评论 -
【C++】C++常见面试题汇总,持续更新中...
1:指针(*)、引用(&)、解引用(*)、取地址(&)、的概念和区别概念:指针指向一块内存,指针保存的是内存的地址;引用是变量的别名,本质是引用该变量的地址。解引用是取指针指向的地址的内容,取地址是获得变量在内存中的地址。区别:(1)引用使用是无需解引用,指针需解引用。(2)引用不能为空,指针可以为空。(3)引用在定义时被初始化一次,之后不可变;原创 2016-03-23 13:53:56 · 11098 阅读 · 0 评论 -
【C++】UTF-8字符和GB2312字符相互转换函数
//UTF-8到GB2312的转换char* U2G(const char* utf8){ int len = MultiByteToWideChar(CP_UT转载 2015-12-08 17:00:34 · 843 阅读 · 0 评论 -
【C++】STL常用容器总结之十二:string类
13、string类声明string类本不是STL的容器,但是它与STL容器有着很多相似的操作,因此,把string放在这里一起进行介绍。 之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下的需要。我们尽可以把它看成是C++的基本数据类型。 首先,为了在我原创 2016-08-25 13:02:43 · 22812 阅读 · 6 评论 -
【C++】STL常用容器总结之十一:容器小结
12、容器小结1、容器的选用Vector和deque容器提供了对元素的快速访问,但付出的代价是,在容器的任意位置插入或删除元素,比在容器尾部插入和删除的开销更大,因为要保证其连续存储,需要移动元素;list类型在任何位置都能快速插入和删除,因为不需要保证连续存储,但付出的代价是元素的随机访问开销较大。特征如下: - 与vector容器一样,在deque容器的中间insert或erase元素效率比原创 2016-08-25 12:44:26 · 1121 阅读 · 1 评论 -
【C++】STL常用容器总结之十:多重映射multimap和多重集合multiset
11、多重映射multimap和多重集合multiset由于multimap/multiset与map/set有太多的相似之处,故在这里我们一起进行介绍。首先需要指出的是,multimap的特性以及用法与map完全相同,唯一的差别在于它允许键值重复。同样,multiset的特性以及用法与set完全相同,唯一的差别在于它也允许键值重复。 Map和set容器中,一个键只能对应一个实例,而multima原创 2016-08-25 12:32:24 · 2407 阅读 · 0 评论 -
【C++】STL常用容器总结之九:集合set
10、集合setMap容器是键值对的集合,而set容器只是单纯的键的集合,当只想知道一个值是否存在时,使用set容器是最合适的。在set中,所有元素都会根据其键值被自动排序,同时set中不允许两个元素有相同的键值。1、set容器的一些操作Set容器支持大部分的map操作,主要包括以下几种操作:1、声明set对象set<T> s; // 创建一个名为s的空set,T是类型名。set<T> s(s2原创 2016-08-25 12:28:20 · 2384 阅读 · 0 评论 -
【C++】STL常用容器总结之八:映射map
9、映射mapMap是键-值对的集合,map中的所有元素都是pair,可以使用键作为下标来获取一个值。Map中所有元素都会根据元素的值自动被排序,同时拥有实值value和键值key,pair的第一元素被视为键值,第二元素被视为实值,同时map不允许两个元素有相同的键值。要使用map对象,必须包含map的头文件#include<map>。1、map的构造函数在定义map对象时,必须分别指明键和值的类型原创 2016-08-25 12:20:54 · 5266 阅读 · 2 评论 -
【C++】STL常用容器总结之七:对组pair与关联容器
8、对组pair在这部分,我们先介绍一下对组pair与关联容器,之后在介绍常用的几个具体的关联容器。1、关联容器关联容器是存储对象集合的类型,支持通过键的高效查询。关联容器的大部分行为与顺序容器相同,二者的本质区别在于关联容器通过键存储和读取元素,而顺序容器是通过元素在容器中的位置顺序存储和访问元素。 关联容器的每个元素包含一个键值(key)和一个实值(value)。当元素被插入到关联容器中时,容原创 2016-08-25 12:10:03 · 1894 阅读 · 0 评论 -
【C++】STL常用容器总结之六:基于deque的顺序容器适配器
7、基于deque的顺序容器适配器1. stack的基本概念Stack即栈,允许新增元素、移除元素、取得最顶端元素。但除了最顶端外,没有任何其他方法可以存取stack的其他元素,换言之,stack不允许随机访问。可以将stack看成是封闭了一端开口的deque。 将元素插入stack的操作称为push,将元素弹出stack的操作称为pop。Stack所有元素的进出都必须符合“后进先出”的条件,只有原创 2016-08-25 11:22:23 · 1280 阅读 · 0 评论 -
【C++】STL常用容器总结之五:双端队列deque
所谓的deque是”double ended queue”的缩写,双端队列不论在尾部或头部插入元素,都十分迅速。而在中间插入元素则会比较费时,因为必须移动中间其他的元素。双端队列是一种随机访问的数据类型,提供了在序列两端快速插入和删除操作的功能,它可以在需要的时候改变自身大小,完成了标准的C++数据结构中队列的所有功能。 Vector是单向开口的连续线性空间,deque则是一种双向开口的连续线性空原创 2016-08-25 11:05:53 · 13597 阅读 · 0 评论 -
【C++】STL常用容器总结之四:链表list
List是每个节点包含前驱指针、后继指针和数据域三个部分的双向链表。List不提供随机存取,访问元素需要按顺序走到需存取的元素,时间复杂度为O(n),在list的任何位置上执行插入或删除操作都非常迅速,只需在list内部调整一下指针。list不仅是一个双向链表,而且还是一个环状双向链表。所以它只需要一个指针,便可以完整实现整个链表。(这里需要特别强调一下:list到底是不是双向链表?有的书上说是,有原创 2016-08-25 10:34:40 · 8162 阅读 · 1 评论 -
【C++】STL常用容器总结之三:向量vector
4、向量vectorVector是同一种类型的对象的集合,每个对象都有一个对应的整数索引值。Vector的数据安排及操作方式与array非常相似,唯一的差别在于array是静态空间,一旦配置了就不能改变;vector是动态空间,随着元素的加入,它的内部机制会自行扩充空间以容纳新元素。 使用vector之前,必须包含相应的头文件和命名空间:#include <vector>using std::v原创 2016-08-24 23:35:48 · 5115 阅读 · 2 评论