C++学习
荷泽泽
菜鸡一枚
展开
-
STL函数对象————函数对象
是一个重载函数调用操作符的类,其实例化对象称为函数对象,也叫做仿函数原创 2022-03-15 09:02:32 · 151 阅读 · 0 评论 -
STL常用容器————map /multimap
基本概念原创 2022-03-06 20:53:34 · 2131 阅读 · 0 评论 -
STL常用容器————set / multiset
基本概念所有元素在插入时会自动排序属于关联式容器,底层结构用二叉树实现构造与赋值插入数据时用insert,自动排序大小和交换size() //返回容器中元素数目empty()//判断容器是否为空swap(st)//交换两个容器插入和删除查找和统计find(key); //查找key是否存在,若存在,返回该键的元素的迭代器;若不存在,返回set.end();count(key); //统计key的元素个数set/multiset区别set不允许重复元素,set插入数据原创 2022-03-05 21:21:25 · 601 阅读 · 0 评论 -
STL常用容器————list
基本概念数据链式存储。物理存储上不连续,逻辑上连续STL中为双向循环链表,其迭代器只支持前移和后移,属于双向迭代器插入和删除数据存取迭代器不支持随机访问front(); //返回第一个元素。back(); //返回最后一个元素。反转和排序reverse(beg,end); //反转链表由于不是随机访问的迭代器,无法使用标准算法库内的sort函数。只能使用内部提供的p.sort();无参数,默认从小到大排列。改变排序序列需要自己声明函数...原创 2022-03-05 19:43:46 · 405 阅读 · 0 评论 -
STL常用容器————栈与队列
stackqueue原创 2022-03-05 19:08:38 · 51 阅读 · 0 评论 -
STL常用容器————deque容器
.1 基本概念双端数组:可以对头端进行插入删除工作原理:内部有一个中控器,维护每段缓冲区中的地址,缓冲区存放数据。支持随机访问构造与赋值操作与vector相同。当想只读不写deque容器时,需要加上const。并且使用cong_iterator迭代器void pint(const deque<int>& p) { for (deque<int>::const_iterator it = p.begin(); it < p.end(); it++) {原创 2022-03-05 19:05:18 · 148 阅读 · 0 评论 -
STL常用容器————vector
.1 基本概念与数组类似,称为单端数组,可以动态扩展(找更大的空间,将原数据拷贝到新空间,释放原空间)。迭代器支持随机访问.2 构造函数.3 赋值操作函数原型:vector& operator=(const vector &vec); //重载等号操作符assign(beg, end); //将[beg, end)区间中的数据拷贝赋值给本身。区间尾部无法取到 vector<int> p1; p1.push_back(10);原创 2022-03-05 16:27:35 · 234 阅读 · 1 评论 -
STL常用容器————String
.1 基本概念C语言中字符串为char *C++中字符串为string本质是一个类,类内封装了char *,是一个char *型容器.2 构造函数创建一个空的字符串 string();使用字符串S初始化 string(const char* s);使用一个string对象初始化另一个 string(const string & str);使用n个字符c初始化string(int n, char c);.3 赋值操作...原创 2022-03-04 20:10:58 · 317 阅读 · 0 评论 -
STL————基础概念
为了提高复用性,基于C++中的面向对象(封装,继承,多态)和泛型编程思想。建立起数据结构和算法的标准,STL(Standard Template Library,标准模板库)。STL六大组件容器: 各种数据结构,如vector,queue,stack算法:常用算法,如sort,find,for_each迭代器:容器与算法之间的桥梁仿函数:是一个能行使函数功能的类,需要重载()运算符适配器:用来修饰容器或仿函数或迭代器接口空间配置器:用来空间的配置与管理Containers, Algori原创 2022-03-04 15:41:12 · 409 阅读 · 0 评论 -
模板————类模板
.1 类模板语法template<class NameType,class AgeType> //包含两个成员属性,所以用两个Tclass Person {public: NameType m_name; AgeType m_age;};Person<string, int> p; //实例化只能用显示指定类型.2 类模板与函数模板的区别类模板 没有自动类型推导的使用方式类模板 在模板参数列表中可以有默认参数template<原创 2022-03-03 21:41:29 · 274 阅读 · 0 评论 -
模板————函数模板
.1 模板概念建立通用的模板,提高复用性模板不可以直接使用,只是一种框架模板的通用并不是万能的.2 函数模板语法当多个函数逻辑相似时,可以建立一个通用函数,其函数返回值类型和形参类型可以不具体制定,用一个虚拟的类型来代表语法: template<typename T>template —声明创建模板typename —表明其后面的符号是一种数据类型,可以用class代替T — 通用的数据类型,名称可以替换,通常为大写字母template<typename T>原创 2022-03-02 20:42:14 · 907 阅读 · 0 评论 -
文件操作————二进制文件
以二进制方式读写,打开方式要制定为ios::binary.1写文件利用流对象调用成员函数write ostream& write(const char * buffer , int len ) ;第一个参数为字符型常量指针,第二个为长度class Person {public: char m_name[64]; //最好用c的char类型,而不用C++中的string int m_age;};void test() { ofstream ofs("test.txt",原创 2022-02-28 17:14:25 · 236 阅读 · 0 评论 -
文件操作————文本文件
程序运行时数据属于临时数据,运行结束就会被释放,通过文件可以将数据持久化。需要使用头文件<ftream>原创 2022-02-28 16:27:38 · 90 阅读 · 0 评论 -
类和对象————多态
.1多态的基本概念静态多态:函数重载以及运算符重载。函数地址早绑定–编译阶段确定函数地址动态多态:派生类和虚函数实现运行时多态。函数地址晚绑定–运行阶段确定函数地址 动态多态满足条件:1.有继承关系2.子类重写父类中的虚函数3.父类的指针或引用,执行子类的对象class Animal {public: virtual void speak() { //虚函数 cout << "动物说话" << endl; }};class Dog :publ原创 2022-02-25 18:16:26 · 492 阅读 · 0 评论 -
类和对象————继承
类与类之间,下级别的成员除了拥有上一级的共性,还有属于自己的特性。.1继承的基本语法`class 子类 : 继承方式 父类子类–派生类父类–基类class BasePage {public: void title() { cout << "搜索栏:" << endl; }};class cpp :public BasePage { //继承basepage类的特性public: void content() { cout << "原创 2022-02-25 11:56:36 · 203 阅读 · 0 评论 -
类和对象————运算符重载
对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型.1加号运算符重载实现自定义数据类型相加。成员函数实现全局函数实现class Person {public: int m_a; int m_b; //1.全局函数实现 //Person operator+(Person& p) { // Person temp; // temp.m_a = this->m_a + p.m_a; // temp.m_b = this->m_b + p.m_b原创 2022-02-20 14:17:12 · 447 阅读 · 0 评论 -
类和对象————友元friend
为使程序中某些特殊函数或类可以访问到私有属性,采用友元技术.1全局函数做友元将全局函数声明前加friend 放在类内即可class Person { friend void test(Person &p); //该全局函数可访问私有属性bpublic:private: int b;};.2 类做友元class Person { //友元声明,fri类可以访问本类的私有属性 friend class fri;public: Person() { name =原创 2022-02-18 21:15:16 · 211 阅读 · 0 评论 -
类和对象————对象模型和this指针
.1对象模型成员变量与成员函数分开存储。空对象所占内存为1字节,只有非静态成员变量属于类的对象上.2this指针由于多个同类型的对象会共用一块代码,为了区分,C++提供this指针指向被调用的成员函数所属对象(不需要定义直接使用)形参与成员变量同名时,可用this指针区分class Person {public: void test(int age) { this ->age = age; } int age;};在类中的成员函数中返回对象本身时,使用return原创 2022-02-18 16:58:18 · 169 阅读 · 0 评论 -
类和对象——对象的初始化和清理
构造函数和析构函数若人为不实现,编译器会自动实现但函数内为空构造函数:创建对象时为对象的成员属性赋值 类名(){}没有返回值可以有参数,可以重载系统自动调用,不用手动调用,并且只调用一次析构函数:对象销毁前清理工作 ~类名(){}没有返回值不可以有参数,无法重载系统自动调用,不用手动调用,并且只调用一次构造函数的分类及调用按参数分类 无参构造(默认构造)和有参构造按类型分类 普通构造和拷贝构造函数class test { public: //无参构造原创 2022-02-13 19:06:11 · 409 阅读 · 0 评论 -
类和对象————封装
C++将所有事物都看作对象,具有相同性质的对象为一类。封装意义一:将属性和行为看作一个整体与C中结构体类似。一个类分为三部分:访问权限;属性;行为主函数中需要创建相应的对象属性和行为又统称为成员属性=成员属性=成员变量 行为=成员函数=成员方法class student { public: //访问权限 string s_name; //属性 string s_number; void writname(string n_name){ s原创 2022-02-06 22:01:40 · 543 阅读 · 0 评论 -
C++函数高级
1.函数默认参数void func (int a ,int b=20){}函数参数可以设置默认值,主函数中使用时没传入就用默认值,传入了就用传入值注意事项:参数列表中若使用默认值,则之后参数均需要为默认值函数声明与函数实现只能有一个使用默认参数2.函数占位参数在参数列表中只写数据类型,主函数使用时必须传入值。void func (int a,int ){}占位参数与默认参数可以同时使用void func (int a,int =5){}3.函数重载...原创 2022-02-06 21:17:07 · 526 阅读 · 0 评论 -
C++中引用&的理解
C++中的&h和C中相比,除了表示取地址,还多了一重“引用”的含义。该重含义我理解为看成一种 别名,相当于指针常量。即就是说当你声明了一个引用后,它所指的是一处固定的地址。之后对引用进行的一系列操作,编译器都自动转化为对地址内的内容进行操作。几种注意事项:必须初始化。int &b=a;初始化后无法更改指向,(但可以更改所指向地址内的值)例如: int a=10; int c=20; int &b=a; cout <<"a原创 2022-02-05 15:07:34 · 745 阅读 · 0 评论