
C++
Adam Xi
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++正则表达式
C++正则表达式原创 2020-05-30 22:12:12 · 5337 阅读 · 1 评论 -
SGI-STL 空间配置器
写在前面空间配置器概念空间配置器:顾名思义,就是为各个容器高效的管理空间(空间的申请与回收)的+为什么需要空间配置器原创 2020-05-30 17:55:26 · 359 阅读 · 0 评论 -
C++11特性(二)
委派构造函数委派构造函数可以减少构造函数的书写量class Info {public: Info() : type(1) , name('a') { InitRest(); } Info(int i) : type(i) , name('a') { InitRest(); } Info(char e) : type(1) , ...原创 2020-05-03 11:20:28 · 481 阅读 · 0 评论 -
C++11特性(一)
C++11 简介在C++98标准之后,C++标准委员会于2003年其实还提出过一份技术勘误表(TC1),使得C++03 这个名字已经取代了C++98为C++11之前的最新的C++标准名称。不过由于 TC1 主要是对 C++98 标准中的漏洞进行修复,语言的核心部分并没有改动,因此大多数人习惯将这两个标准合称为 C++98/03相比于 C++98/03 ,C++11 带来了数量可观的变化,不仅增...原创 2020-04-23 17:41:51 · 859 阅读 · 1 评论 -
浅析C/C++中static
static原创 2020-02-26 16:05:26 · 159 阅读 · 0 评论 -
C++STL树形结构的关联式容器
关联式容器STL容器分为序列式容器和关联式容器序列式容器包括vector、string、list、deque、forward_list等,因为其底层为线性序列的数据结构,里面存储的是元素本身关联式容器也是用来存储数据的,与序列式容器不同的是,其里面存储的是<key, value>结构的键值对,在数据检索时比序列式容器效率更高键值对用来表示具有一一对应关系的一种结构,该结构中一...原创 2020-01-21 20:41:17 · 951 阅读 · 0 评论 -
二叉搜索树
模拟实现#include <iostream>using namespace std;//为了简化问题,将二叉搜索树定义为节点值都不相同的树template<class T>struct BSTNode{ BSTNode(const T& data = T()) : _pLeft(nullptr) , _pRight(nullptr) ...原创 2019-12-20 17:18:53 · 748 阅读 · 0 评论 -
C++智能指针
智能指针原创 2019-12-11 15:03:26 · 1840 阅读 · 0 评论 -
C++异常
异常:是指在程序运行周期发生的异常事件,一般情况下是不可预测的。C的错误处理方式终止程序如assert,缺陷:用户难以接受。如发生内存错误,除0错误时就会终止程序返回错误码缺陷:需要程序员自己去查找对应的错误。如系统的很多库的接口都是通过把错误码放到errno中,表示错误setjmp和longjmp结构化异常的基础,发生异常则跳转至对应的模块,不过一般情况下很少使用C++异常概念...原创 2019-11-21 16:46:24 · 491 阅读 · 0 评论 -
C++多态
C++多态原创 2019-11-09 18:27:16 · 1347 阅读 · 0 评论 -
C++继承
一、继承简介众所周知,C++是面向对象(OOP)的一门语言,而面向对象的三大特性为封装,继承,多态。由此可见,继承是面向对象程序设计中的重要特性之一,本篇中将介绍一下C++中的继承特性及用法。概念继承机制是面向对象程序设计中实现代码复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生的新类,称为派生类 或 子类,而原有特性的旧类称为基类 或 父类继承呈现了面...原创 2019-11-08 00:19:40 · 1349 阅读 · 0 评论 -
皇后问题,8皇后、n皇后、2n皇后
8皇后问题问题描述:八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。计算机发明后,有...原创 2019-10-29 23:24:07 · 2280 阅读 · 0 评论 -
C++模板(二)
模板原创 2019-10-26 17:37:04 · 697 阅读 · 0 评论 -
C++之STL
STL原创 2019-10-26 13:13:34 · 364 阅读 · 0 评论 -
priority_queue的模拟实现
//优先级队列#include<iostream>using namespace std;//priority_queue的模板参数: T--元素类型,Container--底层数据结构(默认为vector),Compare--比较方式(大堆/小堆---less/greater-默认为less)template<class T, class Container = ve...原创 2019-10-25 20:16:10 · 1405 阅读 · 0 评论 -
queue的模拟实现
#include<iostream>using namespace std;#include<deque>//库函数中queue的底层结构为deque//模板参数: T--数据类型 Container--底层数据结构template<class T, class Container = deque<T>>class queue{...原创 2019-10-25 20:01:34 · 576 阅读 · 0 评论 -
stack的模拟实现
#include<iostream>using namespace std;#include<deque>//模板参数: T--数据类型 Container--底层数据结构template<class T, class Container = deque<T>>class stack{public: stack() :co...原创 2019-10-25 19:59:29 · 570 阅读 · 0 评论 -
STL之deque
deque介绍1、deque是动态大小的序列式容器,可以向两端进行扩容或压缩2、特定的库可以以不同的方式实现deque,但通常都是一种动态数组。不论在何种情况下,它都允许通过随机访问迭代器直接访问单个元素3、deque提供了一些与vector相似的功能,但deque在头部和尾部进行数据插入和删除操作更加高效。与vector不同的是,deque不能保证所有元素都存储在连续的空间中,在deque...原创 2019-10-25 19:47:11 · 435 阅读 · 0 评论 -
STL之list
list介绍1、list是可以在常数范围内在任意位置进行插入删除的序列式容器,并且该容器可以前后双向迭代2、其底层结构:带头结点的双向循环链表3、list和forward_list相似:但是forword_list是单链表,只能朝前迭代4、与其他容器相比,list在任意位置插入删除更加高效,但最大的缺陷是不能进行任意位置元素的访问,若要访问第pos位元素,需要从头节点开始朝前或朝后进行遍历...原创 2019-10-25 18:58:20 · 407 阅读 · 0 评论 -
STL之vector
vector介绍简言之,vector是表示可变大小数组的容器序列其底层结构:可存放任意数据类型的动态类型顺序表具体介绍如下:1、和数组一样,vector也是用一片连续空间存储数组,意味着它可以和数组一样高效地通过下标访问每个空间中的元素,但和数组不同的是,它的大小可以动态改变,而且是被容器自动改变,无需使用者关心2、本质讲,vector动态分配数组来存储它的元素。当新元素插入时,vect...原创 2019-10-25 18:16:00 · 389 阅读 · 0 评论 -
list的模拟实现
#include<iostream>using namespace std;#include<assert.h>template<class T> struct ListNode{ ListNode(const T& data = T()) :_pNext(nullptr) , _pPrev(nullptr) , _data(d...原创 2019-10-13 20:02:58 · 915 阅读 · 0 评论 -
vector的模拟实现
#include<iostream>using namespace std;#include<assert.h>#include<string>//vector的底层结构为可存放任意类型的动态顺序表//由于可存放任意类型,所以用模板来进行模拟实现template <class T> class Vector{public: //...原创 2019-10-13 14:19:12 · 799 阅读 · 0 评论 -
C++类与对象(一)
gaff原创 2019-09-15 17:31:49 · 1518 阅读 · 1 评论 -
DateClass
#include<iostream>using namespace std;class Date{public: Date(int year = 1999, int month = 1, int day = 1) //构造函数 { _year = year; _month = month; _day = day; } Date(const Date&a...原创 2019-09-16 00:47:58 · 427 阅读 · 0 评论 -
C++类与对象(二)
类的六个默认成员函数如果一个类中什么成员都没有,简称为空类,可是空类中就什么都没有吗?并不是的,任何一个类在我们不写的情况下,都会自动生成下列六个成员函数:构造函数构造函数是一个特殊的成员函数,名字与类型相同,创建类型对象时有编译器自动调用,保证每个数据成员都有一个合适的初值,并且在对象的生命周期内只调用一次特性构造函数是特殊的成员函数,构造函数虽然名称为构造,但是需要注意的是构造函数...原创 2019-09-16 00:49:22 · 1013 阅读 · 0 评论 -
C++类与对象(三)
static成员概念声明为static的类成员称为类的静态成员,用static修饰的成员变量,称之为静态成员变量;用static修饰的成员函数,称之为静态成员函数。静态的成员变量一定要在类外进行初始化特性1、静态成员为所有类对象所共享,不属于某个具体的实例2、静态成员变量必须在类外定义,定义时不添加static关键字3、类静态成员即可用类名::静态成员或者对象.静态成员来访问4、静...原创 2019-09-23 22:26:56 · 790 阅读 · 0 评论 -
C++内存管理
C/C++内存分布说明1、栈又叫堆栈,非静态局部变量/函数参数/返回值等等,栈是向下增长的2、内存映射段是高效的I/O映射方式,用于装载一个共享的动态内存库。用户可以使用系统接口创建共享内存,做进程间通信3、堆用于程序运行时动态内存分配 ,堆是向上增长的4、数据段----存储全局数据和静态数据5、代码段----可执行的代码/只读常量C中动态内存管理C++中动态内存管理...原创 2019-09-25 23:03:34 · 976 阅读 · 0 评论 -
C++模板(一)
泛型编程如何实现一个通用的函数呢?虽然使用函数重载可以实现,但是缺点很明显:1、重载函数仅仅只是类型不同,代码复用率低,只要有新类型出现,就需要增加新的函数2、代码可维护性低,一个出错可能所有的重载都出错由此,引入了泛型编程的概念!泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础。其中,模板包含函数模板和类模板函数模板概念函数模板代表了一个函数家族...原创 2019-09-25 23:41:28 · 390 阅读 · 0 评论 -
string类---例题
翻转字符串class solution{public: string reverseString(string s) { if (s.empty()) { return s; } size_t start = 0; size_t end = s.size() - 1; while (start < end) { swap(s[start],...原创 2019-09-27 00:03:58 · 856 阅读 · 0 评论 -
STL之string
了解string类1、string是表示字符串的字符串类2、该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作。3、string在底层实际是:basic_string模板类的别名,typedef basic_string<char, char_traits, allocator> string;4、不能操作多字节或者变长字符的序列。常用接口说...原创 2019-09-28 20:33:37 · 659 阅读 · 0 评论 -
string的模拟实现
阿发达深V啊原创 2019-10-11 17:16:05 · 556 阅读 · 0 评论 -
C++初探
C++关键字C++98/03中,关键字共有63个C++11中,关键字共有73个:在前面的基础上,新加了alignas、alignof、char16_t、char32_t、constexpr、decltype、noexcept、nullptr、static_assert、thread_local,并对少数几个关键字进行了一定的修改。命名空间在C/C++中,变量、函数和类都是大量存在的,这些...原创 2019-09-14 13:37:37 · 448 阅读 · 0 评论