![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
学习
文章平均质量分 76
坎温
这个作者很懒,什么都没留下…
展开
-
常见的排序
#include<iostream>#include<vector>using namespace std;//冒泡//最好O(n),最坏O(n2),平均O(n2)//O(1),稳定int *bubble(int a[],int len) { for (int i = 0; i < len - 1; ++i) { for (int j = 0; j < len - 1 - i; ++j) { if (a[j] > a[j + 1]) {原创 2021-09-24 15:37:55 · 186 阅读 · 0 评论 -
c++ primer学习笔记 第一章
第一章 开始一个函数包括返回类型,函数名,括号包围的形参列表,函数体。函数体中return 语句包含的返回值类型必须与函数的返回类型相容。c++使用标准库来提供IO机制,一般为 iostream 库,包含两个基础类型istream和ostream。标准库定义了四个IO对象: cin, cout, cerr, clog。输入运算符为>>, 输出运算符为<<,二者都是表达式,一个表达式产生一个计算结果。>>接受一个istream作为其左侧运算对象,接受一个对象作为其右侧原创 2020-06-01 16:47:40 · 174 阅读 · 0 评论 -
常量指针和指针常量
指针是对象而引用不是,所以允许把指针本身定义为常量,即为常量指针。指针指向(存放在指针中的地址)不能变,但是其所指向的值可以变。格式为int *const ptr。const修饰ptr,说明ptr本身是一个常量对象。指针常量就是指向常量的指针。不能改变其所指对象的值,指针指向可以变。格式为const int *ptr,const修饰int,说明指向的值不能变。顶层const表示指针本身是个常量,底层const表示指针所指对象是个常量。...原创 2020-06-02 19:21:10 · 128 阅读 · 0 评论 -
c++ primer学习笔记 第二章
第二章 变量和基本类型1.基本内置类型包括算术类型和空类型,算术类型分为整型(包络字符和布尔类型在内)和浮点型。地址是一个数字,根据他可以找到内存中的一个字节。1.算术类型机器实现:计算机由比特序列存储数据,大多数机器的1字节=8比特,1字=4/8字节=32/64比特,可寻址的最小内存块称为字节,存储的基本单元称为字。大多数计算机将内存中每一个字节和一个数字(地址)关联起来,所以我们能够使用某个地址表示从这个地址开始的大小不同的比特串,不同数据类型所占比特数不同,所以数据类型很重要。除过布尔和扩原创 2020-06-03 20:46:00 · 157 阅读 · 0 评论 -
c++ primer学习笔记 第三章
第三章 字符串 向量和数组第二章介绍的内置类型是c++直接定义的,标准库定义了一组具有更高级性质的类型,例如string和vector。1.命名空间的using声明目前为止,我们用到的所有库函数基本都属于命名空间std。格式:using 命名空间 :: 名字,如using std :: cin。头文件最好不要包含using声明,因为头文件内容会被拷贝到所有引用它的文件中,如果头文件有个using声明,那么所有使用了该头文件的文件都会有这个声明。不经意间可能会产生问题。2.标准库类型string原创 2020-06-04 17:27:45 · 240 阅读 · 0 评论 -
c++primer 学习笔记 第四章
第四章 表达式表达式由一个或多个运算对象组成,对表达式求值将得到一个结果。1.基础1.基本概念一元运算符:作用于一个运算对象。如取址符和解引用符。二元运算符:作用于两个运算对象。如==,<这些函数调用也是特殊的运算符,对运算对象的数量没有限制。重载运算符:IO库的<<,>>以及string对象,vector对象,迭代器使用的运算符都是重载的运算符。2.求值顺序,优先级,结合律可以利用括号改变运算顺序。对于未指定运算顺序的运算符,如int i=f()*f1()原创 2020-06-05 19:27:38 · 151 阅读 · 0 评论 -
c++primer学习笔记 第五章
第五章 语句1.简单语句别漏写分号也别多写分号,如果是空语句需要注释。while (iter!=svec.end()) ; //循环体时空语句++iter; //递增运算不属于循环的一部分复合语句:用花括号括起来的语句和声明的序列,也称作块。一个块就是一个作用域,在块中引入的名字只能在块内部及子块中访问。块不以分号结束。2.条件语句(if和switch)1.ifelse与离他最近尚未匹配的if匹配。注意使用花括号。2.switchcase标签必须是整型常量表达式。注意不要漏写brea原创 2020-06-05 19:28:16 · 134 阅读 · 0 评论 -
C++ primer学习笔记 第六章
第六章 函数函数可以有0个或者多个参数,可以重载函数,也就是同一个名字可以对应不同的函数。1.函数基础函数包括返回类型,函数名,形参列表,函数体。**函数三要素是返回类型,函数名,形参列表,描述了函数的接口,**说明了调用该函数所需的全部信息。调用函数时用调用运算符(),()内时实参列表,使用实参初始化函数的形参。实参是形参的初始值,二者类型需要匹配(可能会发生隐式类型转换),数量需要一致。形参可以为空。函数返回类型不能是数组或函数类型,但可以是指向数组或者函数的指针。1.局部对象C++中原创 2020-06-07 13:34:54 · 216 阅读 · 0 评论 -
C++ primer学习笔记 第七章
第七章 类我们使用类来定义自己的数据类型。类的基本思想是数据抽象和封装,数据抽象是一种依赖于接口和实现分离的编程计算,要想实现类的数据抽象和封装,首先需要定义一个抽象数据类型,类的设计者负责考虑类的实现过程,使用类的程序员只需要思考类做了什么。数据抽象———定义数据成员和函数成员的能力;封装———保护类的成员不被随意访问的能力,通通过将类的实现细节设为privata。1.定义抽象数据类型成员函数的声明必须在类的内部,定义可以在类内也可以在类外(需要加上作用域),作为接口组成部分的非成员函数,它们的原创 2020-06-09 19:23:54 · 340 阅读 · 0 评论 -
c++ primer学习笔记 第八章
第八章 IO库c++语言不直接处理输入输出,而是通过一组定义在标准库中的类型来处理IO。这些类型支持从设备读取数据和写入数据的IO操作,设备可以是文件,控制台窗口等。例如istream是输入流类型,cin是istream的一个对象,>>是从istream对象读取输入数据的运算符。1.IO类iostream定义了用于读写流的基本类型,fstream定义了读写命名文件的类型,sstream定义了读写内存string对象的类型。标准库使我们能忽略不同类型流之间的差异(普通流,文件流,stri原创 2020-06-19 23:04:06 · 197 阅读 · 0 评论 -
c++ primer学习笔记 第九章
第九章 顺序容器一个容器就是一些特定类型对象的集合。顺序容器为程序员提供了元素存储和访问顺序的能力,这种顺序不依赖于元素的值,只与元素加入容器时的位置相对应。而关联容器则根据关键字的值来存储元素。1.概述string和vector将元素保存在连续的内存空间,所以支持连续随机访问,在尾部插入数据快,在其他地方插入数据慢,因为要挪动很多。list和forward_list不支持元素随机访问,访问一个元素只能遍历,但在任意位置添加删除都很快。deque是双端队列,支持快速随机访问,在两端添加删除快。a原创 2020-06-19 23:04:38 · 277 阅读 · 0 评论 -
c++ 迭代器访问二维数组
#include<iostream>#include<vector>int main(){ std::vector<int> arr(5); // 创建一维数组 for(int i=0;i<5;++i) std::cout << arr[i]<<" "; std::cout << std::endl; std::cout << std::endl; std::v原创 2020-06-22 20:38:54 · 1014 阅读 · 0 评论 -
二叉树遍历及遍历性质
一些性质:1.前序遍历第一个元素是root,后序遍历最后一个元素是root,中序遍历root的左边元素是左分支,右边元素是右分支;2.已知前中遍历,或者中后遍历可确定二叉树,前后不行;3.二叉搜索树中序遍历有序;4.如果t1是t2的子树,那么t1序列化的结果是t2序列化的子序列;遍历:1.递归前序vector<int> res;void preorder(Treenode* root){ if(root==NULL) return; //这里也可以对res操作,但注意要retu原创 2020-11-25 17:15:24 · 619 阅读 · 0 评论 -
c++中的智能指针
智能指针是一个模板类,用来管理程序中的指针。程序中的对象都有严格的生命周期,全局对象在程序启动时分配,结束时销毁,局部对象在进入定义其所在程序块时倍创建,离开时销毁。而动态分配的对象需要程序员手动释放才会被销毁。有时候忘记释放了就会造成内存泄漏。而智能指针是一个类,超出类的作用域时类会自动调用析构函数,析构函数会自动释放资源。1....原创 2021-03-08 21:30:02 · 218 阅读 · 0 评论 -
c++拷贝控制
https://blog.csdn.net/qq_43647628/article/details/106592995类通过一些特殊的成员函数控制对象的拷贝,赋值,移动,销毁。包括:拷贝构造函数,拷贝赋值运算符,移动构造函数,移动赋值运算符,析构函数。拷贝构造函数和移动构造函数定义当用同一类型对象初始化另一个时会发生什么;拷贝和移动赋值运算符定义了将一个对象赋予另一个对象时会发生什么;析构函数定义了当此类型对象销毁时会发生什么。这些操作都为拷贝控制操作。如果类没有定义,编译器会自动生成,但是可能导致原创 2021-03-09 21:10:45 · 187 阅读 · 0 评论 -
c++中的容器类
一个容器就是一些特定类型对象的集合。主要包括顺序容器,关联容器和容器适配器。顺序容器:各个元素之间有线性关系,元素排列次序与元素值无关,而与元素添加到容器里的次序有关。关联容器:各个元素之间没有严格的物理上的顺序关系。与顺序容器根本的不同:关联容器中的元素是按照关键字来保存和访问的,而顺序容器中的元素是按照它们在容器中的位置来顺序保存和访问的。容器适配器:本质上,适配器是使一种不同的行为类似于另一事物的行为的一种机制。适配器是容器的接口,它本身不能直接保存元素,可以把适配器看作“它保存一个容器,这原创 2021-03-14 17:14:14 · 640 阅读 · 0 评论 -
c++中的继承和多态
1.继承面向对象程序设计的核心思想是数据抽象,继承和动态绑定(封装,继承,多态)。通过数据抽象可以将类的接口和实现分离;通过继承可以定义相似的类型;通过动态绑定可以在一定程度上忽略相似类型的区别,而以统一的方式使用它们的对象。继承有基类和派生类(父类和子类)。继承关系继承关系有三种:注意和访问控制符区分:public:公有,任何位置都可以访问private:私有成员,只有类自己的成员函数才能访问protected: 保护成员,只有类自己和子类的成员函数才能访问子类对象可以赋值给父类对象,父原创 2021-03-18 14:33:36 · 1369 阅读 · 0 评论