C++基础
C++语法基础、类和对象、内存管理、模板基础、STL基础、string、vector、list、deque、stack、queue、I/O流基础
贪心的葡萄
算法与数据结构,计算智能,进化计算,神经网络,C/C ,linux,python,matlab
展开
-
C++_模板
1、非类型模板参数模板参数分类类型形参与非类型形参。类类型形参:出现在模板参数列表中,跟在class或者typename之类的参数类型名称。非类型形参:就是用一个常量作为类(函数)模板的一个参数,在类(函数)模板中可将该参数当成常量来使用。#include<iostream>using namespace std;namespace mystd{ template&...原创 2020-01-29 17:09:10 · 138 阅读 · 0 评论 -
C++_IO流
1、输入输出缓冲区C语言借助缓冲区来进行输入和输出。设备–>输入缓冲区–>代码代码–>输出缓冲区–>设备输入输出缓冲区:可以屏蔽掉低级I/O的实现,低级I/O的实现依赖操作系统本身内核的实现,所以如果能够屏蔽这部分的差异,可以很容易写出可移植的程序。可以使用这部分的内容实现“行”读取的行为,对于计算机而言是没有“行”这个概念,有了这部分,就可以定义“行”的...原创 2020-01-29 12:17:27 · 119 阅读 · 0 评论 -
C++_stack和queue容器适配器
1、stackstack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(即栈顶)被压入和弹出。stack的底层容器可以是任何标准的容器类模板或者一些其他特定的容器类,这些容器...原创 2020-01-27 13:58:09 · 376 阅读 · 0 评论 -
C++_vector容器模拟实现
vector容器模拟实现#include<iostream>#include<assert.h>using namespace std;namespace mystd{ template<class T> class vector { public: typedef T * iterator; typedef const T * c...原创 2020-01-23 21:12:07 · 245 阅读 · 1 评论 -
C++_deque容器
deque容器简介deque双端队列是动态大小的序列式容器,可以向两端进行伸缩。特定的库可以以不同的方式实现deque,但通常都是一种动态数组。不论在何种情况下,它都允许通过随机访问迭代器直接访问单个元素,可以根据需要动态的伸缩。deque提供了一些与vector相似的功能,但deque在头部和尾部进行数据插入和删除操作更加高效。与vector不同的是,deque不能保证所有的元素存储在连...原创 2020-01-20 20:15:08 · 185 阅读 · 0 评论 -
C++_list容器
list容器简介list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,以让其更简单高效。与其他的序列式容器相比,list通...原创 2020-01-20 13:43:00 · 192 阅读 · 0 评论 -
C++_vector容器
vector简介vector是表示可变大小数组的序列容器。像数组一样,vector也采用连续存储空间存储元素,采用下标访问元素,但是他的大小是可以动态改变的,被容器自动处理。vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组可能需要被重新分配大小。为了增加存储空间,其做法是,分配一个新的数组,然后将全部元素移到这个数组。就时间而言,这是一个相对代价高的任务。vecto...原创 2020-01-19 12:51:16 · 284 阅读 · 0 评论 -
C++_string类模拟实现
1、string类问题2、浅拷贝3、深拷贝4、写时拷贝5、string类的模拟实现原创 2020-01-16 16:15:57 · 183 阅读 · 0 评论 -
C++_string类常用接口
1、string类的常用接口(1)string类对象的常见构造string():构造空的string类对象,即空字符串string(const char * s):用C-string来构造string类对象string(size_t n, char c):string类对象中包含n个字符cstring(const string& s):拷贝构造函数#include<c...原创 2020-01-14 16:57:10 · 206 阅读 · 0 评论 -
C++_模板基础与STL概念
1、泛型编程使用函数重载的缺点:重载的函数仅仅类型不同,代码复用率低,新类型出现时需要增加相应的函数代码可维护性低,一个出错可能所有的重载均出错泛型编程:编写与类型无关的通用代码,是代码复用的一种手段模板:泛型编程的基础,包括函数模板和类模板2、函数模板函数模板:函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参类型产生函数的特定类型版本格式:tem...原创 2020-01-13 14:38:47 · 160 阅读 · 0 评论 -
C++_单例模式
设计模式设计模式:是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。使用设计模式的目的:为了代码的可重用性,让代码更容易被他人理解,保证代码的可靠性。设计模式使代码编写真正工程化。单例模式单例模式:一个类只能创建一个对象该模式码可以保证系统中该类只有一个实例,并提供一个访问他的全局访问点,该实例被所有程序模块共享。比如某服务器程序中,配置信息存放在一个文件中,这些配置数据由...原创 2020-01-12 19:18:13 · 177 阅读 · 0 评论 -
C++_内存管理
1、C&C++内存分布C/C++中程序内存区域划分内核空间(用户代码不可读写)栈(向下生长):非静态局部变量/函数参数/返回值内存映射段(文件映射、动态库、匿名映射):高效的I/O映射方式,用于装载一个共享的动态内存库。用户可以用系统接口创建共享内存,进行进程间通信堆(向上增长):运行时动态内存分配数据段(全局数据、静态数据):存储全局数据和静态数据代码段(可执行代码/只读...原创 2020-01-08 15:13:18 · 281 阅读 · 0 评论 -
C++_类和对象(四)
1、初始化列表在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值。构造函数体中的语句只能将其称作为赋初值,而不能称作初始化。因为初始化只能初始化一次,而构造函数体内可以多次赋值。初始化列表:以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟一个放在括号中的初始值或表达式,如:class Date{public: Date(int year...原创 2019-12-30 12:08:02 · 149 阅读 · 0 评论 -
C++_类和对象(三)
1、拷贝构造函数拷贝构造函数是特殊的成员函数,其特征如下:拷贝构造函数是构造函数的一个重载形式拷贝构造函数的参数只有一个且必须使用引用传参,使用传值方式会引发无穷递归调用#include<iostream>using namespace std;class Date{public: Date(int year = 2019, int month = 12, i...原创 2019-12-29 15:54:37 · 317 阅读 · 3 评论 -
C++_类和对象(二)
1、构造函数构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用,保证每个数据成员都有 一个合适的初始值,并且在对象的生命周期内只调用一次。用来初始化对象。特征:函数名与类名相同无返回值对象实例化时编译器自动调用对应的构造函数构造函数可以重载#include<iostream>class Date{ public: //无参...原创 2019-12-28 12:16:45 · 129 阅读 · 0 评论 -
C++_类与对象(一)
1、类的两种定义方式(1)声明和定义全部放在类体中,需要注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。class Person{ public: void showInfo() { cout<<_name<<" "<<_sex<<" "<<_ag...原创 2019-12-27 16:20:06 · 815 阅读 · 0 评论 -
C++基础(二)
1、命名空间#include<iostream>using namespace std;namespace M{ int a = 0; int add(int a = 10,int b = 20) { return a + b; } namespace N { int a = 1; int add(int a = 20,int b = 30) ...原创 2019-12-26 17:23:52 · 119 阅读 · 0 评论 -
C++基础(一)
1、extern:声明一个变量但是不定义。表示变量在文件以外定义,或者在程序后面定义。2、进制转换3、文件读写#include"head.h"using namespace std;/*--------------------extern--------------------*/extern int i;extern int fun(int);int i=0;i...原创 2019-12-24 22:57:33 · 86 阅读 · 0 评论