c++ 学习笔记
c++学习中记录比较感兴趣的内容
红豆牛奶芒果冰
这个作者很懒,什么都没留下…
展开
-
常用算法
概念由头文件algorithm functional numeric 组成-algorithm最大,涉及比较、交换、查找、遍历、复制、修改等functional模板类,声明函数对象numeric 体积很小,只包括几个序列上面进行简单运算的模板函数遍历for_eachclass print01{public: void operator()(int i) { cout << i << " "; }};void test01(){ vector&原创 2020-11-11 15:25:39 · 89 阅读 · 0 评论 -
函数对象
概念重载函数调用操作符的类,其对象称为函数对象函数对象使用重载的()时,行为类似函数调用,也叫仿函数特点可以像函数一样调用可以有自己的状态,成员属性可以像参数一样传递class MyAdd{public: int operator()(int v1, int v2) { return v1 + v2; }};class Myprint{public: Myprint() { this->count = 0; } int count; void原创 2020-11-11 13:42:03 · 137 阅读 · 0 评论 -
Deque容器
基本概念双端数组,可以在头部进行插入和删除支持随机访问构造函数void test01(){ deque<int>d1,d2,d3,d4; for (int i = 0; i < 10; i++) { d1.push_back(i); } d2 = deque<int>(d1.begin(), d1.end()); d3 = deque<int>(10, 100); d4 = d3; printDeque(d1); prin原创 2020-11-09 16:09:52 · 63 阅读 · 0 评论 -
c++ STL::vector容器
基本概念结构与数组非常相似,也称为单端数组vector可以动态扩展其迭代器支持随机访问[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GAldFghi-1604508386518)(C:\Users\63422\AppData\Roaming\Typora\typora-user-images\image-20201104204954021.png)]构造函数void test01(){ vector<int> v1;//默认构造 for (i原创 2020-11-05 00:46:38 · 64 阅读 · 0 评论 -
STL::string容器
string基本概念本质是一个类char*是一个指针封装了很多成员方法find 、 copy、delete、replace、insert构造函数string();string(const char* s);stirng(const string& str);string (int n, char c);void test01(){ std::string s1;//default constructor const char* str = "原创 2020-11-04 20:44:37 · 72 阅读 · 0 评论 -
C++ STL初识
STL诞生大多情况下,数据结构和算法都未能有一套标准,导致被迫大量重复工作为了建立数据结构和算法的标准,诞生STLSTL基本概念Standard Template LibrarySTL分为:容器、算法、迭代器容器和算法通过迭代器无缝连接STL几乎所有的代码都采用了模板类或模板函数STL六大组件容器:各种数据结构,用来存放数据算法:常用算法,如sort, find, copy等迭代器:扮演了容器和算法之间的胶合器仿函数:行为类似函数,可作为算法的某种策略适配器:用来修饰容器原创 2020-11-04 01:00:52 · 48 阅读 · 0 评论 -
c++ 模板 template
函数模板作用:建立一个通用函数,其函数返回类型和形参类型可以不具体确定 ,用一个虚拟类型来代表template<typename T>void mySwap(T& a, T& b){ T temp = a; a = b; b = temp;}void test01(){ int a = 10; int b = 20; mySwap<int>(a, b); cout << a << "\t" << b原创 2020-11-04 00:17:24 · 166 阅读 · 0 评论 -
c++ 文件操作
文本文件c++中文件操作需要包含<fsream>操作文件的三大类ofstream; 写ifstream; 读fsteam; 读写写文件包含头文件创建流对象打开文件写数据关闭文件#include <fstream>void test01(){ ofstream ofs; ofs.open("test.txt", ios::out); ofs << "write some to test.txt" << endl原创 2020-11-03 15:55:20 · 75 阅读 · 0 评论 -
C++对象的多态特性
多态的基本概念分类两类- 静态多态:重载,复用函数名等- 动态多态:派生类和虚函数实现运行时多态动态多态(函数地址晚绑定):有继承条件子类重写父类的虚函数应用时,父类的指针或引用,指向子类对象class Animal{public: virtual void speak()//动态多态 { cout << "Animal is speaking" << endl; }};class Cat : public Animal{public:原创 2020-11-03 15:05:13 · 78 阅读 · 0 评论 -
C++ 对象继承
继承语法class 子类:继承方式 父类class Basecase //公共类{public: void header() { cout << "this is a head" << endl; } void footer() { cout << "this is a foot" << endl; }};class Java : public Basecase //公共继承{public: void content(原创 2020-11-03 01:54:50 · 83 阅读 · 0 评论 -
c++ 封装
封装意义将属性和行为作为一个整体,表现事物将属性和行为加以权限控制class 类名{ 访问权限: 属性/行为};访问权限public 成员在类内可以,类外可以访问protected 成员在类内可以访问,类外不可以访问,儿子可以访问父亲中的保护内容private 成员在类内可以访问,类外不可以访问,儿子不可以访问父亲的私有内容struct 和 class的区别唯一的区别是默认权限不一样struct 默认公共权限, class 默认私有成员属性私有化原创 2020-11-03 00:37:06 · 70 阅读 · 0 评论 -
函数提高
函数的默认参数int func(int a, int b=20, int c=30){ return a + b + c;}int main(){ cout << func(10) <<endl;//默认b=20, c=30 cout << func(10, 30)<<endl; //b=30, 默认c=30 //如果我们传了数据,则用我们传入的数据 //如果我们没传,则用默认值}//注意点 //1.原创 2020-11-01 20:18:17 · 78 阅读 · 0 评论 -
C++ 引用
引用的本质是一个指针常量,一旦初始化后, 即不能发生改变 ,数据类型为int* constc++推荐使用引用,因为语法方便,所有关于指针的操作由编译器完成void func(int& ref){ ref = 100; // ref是引用,编译器转换为 *ref = 100}int main(){ int a = 10; int& ref = a; //自动转换为 int* const ref = &a ref = 20; // 转换原创 2020-11-01 18:49:35 · 52 阅读 · 0 评论