
AboutC++
文章平均质量分 85
这个栏目用来记录C++知识的总结,供个人学习。
yumoz
积水成渊
展开
-
C++stack&queue(栈、队列、优先级队列)
文章目录stack常见成员函数stack的模拟实现queue常见成员函数queue模拟实现priority_queue仿函数常见成员函数priority_queue的实现总结stackstack是一种容器适配器,专门用在设计用于在LIFO(后进先出)中操作,其中容器仅从容器的一端插入和提取。stack被实现为容器适配器,这些类使用特定的容器类的封装对象作为其底层容器,提供一组特定的成员函数来访问其元素。元素从特定容器的“后面”即为栈顶弹出。底层:template <class T, clas原创 2021-09-17 22:00:50 · 473 阅读 · 1 评论 -
STL之list介绍及实现(list接口、模拟实现list)
文章目录1 什么是list?1.1 模拟实现预备知识2 list原型测试与实现2.1 构造函数(拷贝构造,赋值构造,析构)2.2 迭代器2.3 capacity2.4 modifiers2.4.1 assign2.4.2 push_back/pop_back/push_front/pop_front2.4.3 insert2.4.4 erase2.4.5 swap2.4.6 resize2.4.7 clear2.5 list 迭代器补充3 list迭代器失效附赠思考1 什么是list?list是可以在原创 2021-08-15 21:43:19 · 846 阅读 · 2 评论 -
vector之三(模拟实现vector)
文章目录1 vector 介绍2 vector接口模拟实现2.1 迭代器实现2.2 capacity、size、empty2.3 operator[]2.4 resize2.5 reserve2.6 push_back & pop_back2.7 insert2.8 erase2.9 拷贝构造&赋值拷贝&析构代码1 vector 介绍vector的数据安排以及操作方式与数组非常相似。两者唯一区别在于空间的运用的灵活性。数组是静态空间,一旦配置好了就不能改变,但是vector是动态原创 2021-08-13 21:19:02 · 428 阅读 · 0 评论 -
vector之二(迭代器失效与解决)
文章目录vector迭代器失效情况一(pos含义改变)情况二(野指针)迭代器失效修正总结vector迭代器失效迭代器的主要作用就是让算法不用关心低层数据结构,其低层实际上就是一个指针,或者是对指针进行了封装。所以迭代器失效就是:迭代器低层对应指针所指向的空间被销毁了,而使用一块已经被释放的空间,造成的后果是程序奔溃。下面从几个方面分析vector迭代器失效的几种可能:情况一(pos含义改变)会引起其底层空间改变的操作,都有可能是迭代器失效,比如:resize、reserve、insert、assi原创 2021-08-13 11:02:00 · 873 阅读 · 0 评论 -
vector之一(常见接口代码分析)
文章目录1 vector介绍2 vector使用2.1 常见接口2.1.1 构造函数2.1.2 vector iterator2.1.3 容量空间2.1.4 元素获取2.1.5 修改(增删查改)3 迭代器失效4 模拟实现vector1 vector介绍vector是表示可变大小数组的容器。vector比较像数组,采用连续存储空间来存储元素。可以采用下标对vector元素进行访问,和数组一样。但是,不一样在于,vector的大小是可以动态改变的,而且vector的大小会被容器自动处理。2 vector原创 2021-08-13 09:38:53 · 224 阅读 · 0 评论 -
模拟实现string(v1)
string的模拟实现1 先来介绍一下string2 常见用法2.1 成员函数3 模拟实现3.1 基础接口实现3.2 迭代器3.3 operator[]实现3.4 容量部分实现3.5 扩容(insert、push_back、append、+=)3.6 清理3.7 关系运算类内实现:类外实现:3.8 流运算(>>,<<,getline)4 总结1 先来介绍一下string概述:string是C++标准库里面的一个重要部分,其主要工作是用于字符串处理。2 常见用法2.1 成员函数原创 2021-07-23 22:00:58 · 555 阅读 · 1 评论 -
初识C++中的string(几种遍历方式、基本函数使用)
string介绍字符串是表示字符序列的类。构造字符串对象一张图详解构造字符串的几种形式:string容量计算一张图看懂string是如何计算容量的:上述问题解答如下:()一张图看懂区别)string类对象的遍历先了解如何访问operator[]的使用:函数原型:char& operator[] (size_t pos);const char& operator[] (size_t pos) const;函数返回值: 返回对字符串中位置 pos 的字符的原创 2021-06-13 10:06:18 · 448 阅读 · 0 评论 -
C++模板(函数模板、类模板、模板特化、分离编译)
为什么要有模板?如果要交换两个值,如果两位数都是(int,int)则需要调用下面第一个函数void Swap(int &left, int &right),如果要交换的是(double,double)则要调用的是void Swap(double &left, double &right)。那么如果需要调用别的float,long等类型就需要在此实现函数重载,虽然也可以实现,但是相对代码的复用率比较低,代码维护性也比较低效。于是就有了泛函编程。void Swap(int &原创 2021-06-05 22:58:43 · 532 阅读 · 0 评论 -
C和C++内存管理(new、malloc和free、delete)
一图读懂内存分配总结一下:栈(堆栈),存放非静态局部变量、函数参数、返回值等堆,用于程序运行时动态内存分配。数据段, 存储全局数据和静态数据代码段,存放可执行的代码,或者只读常量malloc、calloc和realloc区别?malloc是在堆上动态开辟空间;calloc是堆上开空间+初始化为0;realloc是对已有空间的扩容,扩容有两种方式(原地扩容和异地扩容)原地扩容和异地扩容的差异就在扩容后地址变了。下面体验一下calloc的初始化:new & dele原创 2021-06-04 22:56:27 · 700 阅读 · 20 评论 -
C++类和对象(3)(构造函数、static成员、内部类、友元函数等)
构造函数接着C++类和对象(2)博客中介绍的构造函数继续说一下构造函数还可以怎么玩?玩法一:构造函数体赋值class Date{public: //全缺省 构造函数 函数体内赋值 Date(int year = 2020, int month = 1, int day = 1) { _year = year; _month = month; _day = day; }private: int _year; int _month;原创 2021-06-03 18:44:17 · 254 阅读 · 0 评论 -
C++类和对象(2)(this指针、6个默认成员函数、const成员)
1 this指针C++编译器给每个“非静态成员函数”增加了一个隐藏的指针参数,让该指针指向当前对象(函数运行时调用该函数的对象),在函数体中对所有成员变量的访问都是通过该指针访问的。但这个this指针对用户来说是透明的,即用户不需要来传递,编译器自动完成。简言之,请看下面程序图解:下面是一个日期类内的成员函数,通过次函数可以发现this指针在成员函数中扮演的角色。下图展示的两段程序表明this指针是成员函数中默认隐藏的,通过该指针去访问类内的成员变量。关于this指针有几个需要注意的点:thi原创 2021-05-29 22:36:35 · 429 阅读 · 2 评论 -
C++类和对象(1)
类的过度从C语言到C++说明,类的来源:C语言中,结构体中只能定义变量,在C++中,结构体中可以是变量也可定义函数。//C语言中结构体,假设定义一个栈typedef int STDataType;struct Stack{ STDataType *a; int size; int capacity;};void StackPush(struct Stack *ps, STDataType x);C++中,结构体可以定义变量也可以定义函数。//C++中的struct 兼容C所有原创 2021-05-22 19:16:05 · 136 阅读 · 0 评论 -
C++入门(命名空间、缺省参数、函数重载、引用、内联函数)
盲区介绍:命名空间、命名空间使用命名空间的目的是对标识符的名称进行本地化,以避免冲突或名字污染。如下图所展示,用命名空间对scanf进行隔离,于是在main函数中就可实现打印命名空间中定义的值了。因为yumoz::scanf中的“::”是阈作用限定符,所以打印结果是0,否则打印的就不是命名空间中定义的值。从上述代码可以让你对命名空间有了一个简单的了解,下面给出几种命名空间的使用方式:对命名空间的指定展开:部分展开和指定展开使用using yumoz::val展开val,而对ch进行指定展原创 2021-05-19 22:50:37 · 240 阅读 · 0 评论 -
C++_数字时钟软件实现设计
利用C++学习内容,通过windows自带函数实现一个简易的时钟#include<iostream>#include<windows.h> //延时与清屏头文件 using namespace std;class time{ public: time(){year=0;month=0;day=0;hour=0;minute=0;sec=0;}//默认构造...原创 2018-10-04 11:22:16 · 1355 阅读 · 0 评论