C++学习
文章平均质量分 91
我的C++学习笔记
无常亦常
生有涯而学无涯
展开
-
c++第16课 --Map和multimap容器
map/multimap的简介map是标准的关联式容器,一个map是一个键值对序列,即(key,value)对。它提供基于key的快速检索能力。map中key值是唯一的。集合中的元素按一定的顺序排列。元素插入过程是按排序规则插入,所以不能指定插入位置。map的具体实现采用红黑树变体的平衡二叉树的数据结构。在插入操作和删除操作上比vector快。map可以直接存取key所对应的value,支持[]操作符,如map[key]=value。multimap与map的区别:map支持唯一键值,每原创 2020-09-26 09:46:34 · 152 阅读 · 0 评论 -
c++第十五课--set/multiset的简介
(1)set是一个集合容器,其中所包含的元素是唯一的,集合中的元素按一定的顺序排列。元素插入过程是按排序规则插入,所以不能指定插入位置。(2)set采用红黑树变体的数据结构实现,红黑树属于平衡二叉树。在插入操作和删除操作上比vector快。(3)set不可以直接存取元素。(不可以使用at.(pos)与[]操作符)。(4)multiset与set的区别:set支持唯一键值,每个元素值只能出现一次;而multiset中同一值可以出现多次。(5)不可以直接修改set或multiset容器中的元素值,因为该原创 2020-09-25 22:19:53 · 296 阅读 · 0 评论 -
c++第14课 --list容器
list介绍1) list是一个双向链表容器,可高效地进行插入删除元素。2) list不可以随机存取元素,所以不支持at.(pos)函数与[]操作符。It++(ok) it+5(err)3) #include list对象的默认构造list采用采用模板类实现,对象的默认构造形式:list lstT; 如:list lstInt; //定义一个存放int的list容器。list lstFloat; //定义一个存放float的list容器。list lstSt原创 2020-08-21 19:59:36 · 168 阅读 · 0 评论 -
第十三课---vector容器
vector容器1) vector是将元素置于一个动态数组中加以管理的容器。2) vector可以随机存取元素(支持索引值直接存取, 用[]操作符或at()方法)。vector尾部添加或移除元素非常快速。但是在中部或头部插入元素或移除元素比较费时vector对象的默认构造vector采用模板类实现,vector对象的默认构造形式 vector vecT;vector采用模板类实现,vector对象的默认构造形式vector<T> vecT; vector<int>原创 2020-07-25 11:41:09 · 196 阅读 · 0 评论 -
第十二课c++ --- string
string和char 的比较1) string是一个类, char是一个指向字符的指针。string封装了char,管理这个字符串,是一个char型的容器。2) string不用考虑内存释放和越界。string管理char所分配的内存。每一次string的复制,取值都由string类负责维护,不用担心复制越界和取值越界等。3)string提供了一系列的字符串操作函数查找find,拷贝copy,删除erase,替换replace,插入insert*1、string的构造函数1)默认构造函数原创 2020-07-20 20:38:41 · 162 阅读 · 0 评论 -
第12课--c++STL基础知识
STL的基本概念STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称。现然主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间。STL的从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),容器和算法通过迭代器可以进行无缝地连接。几乎所有的代码都采 用了模板类和模板函数的方式,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。在C++标准中,STL被组织为下面的13个头文原创 2020-07-20 17:37:11 · 163 阅读 · 0 评论 -
第十一课C++异常
异常的机制,格式如下:try{对某个函数或者动作进行监测。在执行函数里面扔出相应的异常throw();}//后面可以抓取很多和catch(),编译器会根据//参数来进行匹配catch(char *s){}catch(int a){}catch(…)//表示剩下全部的情况#include <cstdlib>#include <iostream>using namespace std;class A{};void k(void){ //thro原创 2020-07-16 20:51:25 · 138 阅读 · 0 评论 -
第十课C++类型转换
在C语言中,类型的转换是统一的也就是 TYPE b=(TYPE)a,例如:int b=(int)a;在C++中就不一样了,C++提供了四种类型转换操作。C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。static_cast 静态类型转换。如int转换成charreinterpreter_cast 重新解释类型dynamic_cast 命名上理解是动态类型转换。如子类和父类之间的多态类型转换。const_cast, 字面上理解就是去const属性。4种类型转换的格式都是一样原创 2020-07-14 21:06:32 · 125 阅读 · 0 评论 -
第九课C++函数模板和类模板
C++提供了函数模板(function template)。所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表。这个通用函数就称为函数模板。凡是函数体相同的函数都可以用这个模板来代替,不必定义多个函数,只需在模板中定义一次即可。在调用函数时系统会根据实参的类型来取代模板中的虚拟类型,从而实现了不同函数的功能。模板的关键字是template类型形式参数的形式为:typename T1 , typename T2 , …… , typename Tn或 cl原创 2020-07-10 23:48:06 · 206 阅读 · 0 评论 -
第八课c++多态
多态如果父类指针指向的是父类对象则调用父类中定义的函数如果父类指针指向的是子类对象则调用子类中定义的重写函数先看看如果不进行多态的实验#include <cstdlib>#include <iostream>using namespace std;class Parent{public: void print() { cout<<"Parent:print() do..."<<endl; }};class Child : p原创 2020-06-29 20:53:48 · 112 阅读 · 0 评论 -
第七课C++继承
1、继承的概念2、派生类的定义方法3、继承重要说明1、子类拥有父类的所有成员变量和成员函数2、子类就是一种特殊的父类3、子类对象可以当作父类对象使用4、子类可以拥有父类没有的方法和属性4、不同的继承方式会改变继承成员的访问属性public继承:父类成员在子类中保持原有访问级别private继承:父类成员在子类中变为private成员protected继承:父类中public成员会变成protected父类中protected成员仍然为protected父类中private成原创 2020-06-28 15:39:48 · 182 阅读 · 0 评论 -
第六课有元函数与有元类
1、有元函数有元函数的作用就是去访问类里面的私密数据,关键字是friend#include<iostream>#include<string>class Name{private: int a;public: Name(int b); void Sea(void); friend void feiName(Name &obj,int a); //有元函数的定义方法};void feiName(Name &obj, int b){ obj原创 2020-06-25 00:53:13 · 310 阅读 · 0 评论 -
第五课-多个对象构造和析构以及静态变量、静态成员函数,动态内存申请
1)对象初始化列表出现原因1.必须这样做:如果我们有一个类成员,它本身是一个类或者是一个结构,而且这个成员它只有一个带参数的构造函数,没有默认构造函数。这时要对这个类成员进行初始化,就必须调用这个类成员的带参数的构造函数,如果没有初始化列表,那么他将无法完成第一步,就会报错。2、类成员中若有const修饰,必须在对象初始化的时候,给const int m 赋值当类成员中含有一个const对象时,或者是一个引用时,他们也必须要通过成员初始化列表进行初始化,因为这两种对象要在声明后马上初始化,而在构原创 2020-06-23 11:04:34 · 328 阅读 · 0 评论 -
第四课c++的浅拷贝与深拷贝
如果同一个类的声明的两个变量互相赋值会咋样?#include<iostream>#include<string>class Name{public: Name(const char *pname){ size = strlen(pname); pName = (char *)malloc(size + 1); strcpy(pName, pname); } Name(Name &obj){ //用obj来初始化自己 pName = (cha原创 2020-06-14 11:09:33 · 127 阅读 · 0 评论 -
c++第三课--函数
ssssssss原创 2020-06-06 23:50:01 · 169 阅读 · 0 评论 -
第二课C与c++的异同
1、作用域:C只有一个全局作用域,相同的变量名将会发生,但是C++可以通过namespace{},来划分全局作用域,在不同的作用域相同的变量名是不会冲突的。如图:#include <iostream>namespace A{ int a=10;}namespace B{ int a=20; namespace C{//namespace允许嵌入 int a=30; }}int main(void){ std::cout<<"A a="<<原创 2020-06-04 23:36:41 · 136 阅读 · 0 评论 -
第一课c++类的初识
C++中的类相当于一种包含函数的自定义数据类型。类包含有属性和方法.属性就是这个类具有的数据成员,方法就是这个类的成员函数。1、类的关键字:class类变量的属性public – 可以被外界函数所访问private – 仅仅内部的变量可以访问protect – 对于内部的变量和上面private的作用是一样的,只不过在继承的时候,不会被子类继承类的使用格式是 class 类名class Circle //类的命名 clsaa 类名{ double radius原创 2020-06-03 17:44:34 · 638 阅读 · 0 评论