- 博客(211)
- 收藏
- 关注
转载 8.7 —— 排序函数及 splice 插入
1、排序,按自己的逻辑nid_item_vec.sort([](const NID_PBDATA &l, const NID_PBDATA &r) -> bool { return l.second.pb_item->ext().dnn_score_cp() > r.seco...
2019-08-08 16:34:00
299
转载 统计学知识总结
1、分位数在统计学里经常提到分位数的概念,下面我们通过一个例子来简单解释一下。假设有一千名学生参加了某次考试, 学生A得了75分,排名603,603/1000=60.3% 学生B得了94分,排名28,28/1000=2.8% 此时,A大约在60.3%的位置上,而B大约在2.8%的位置上。即在60.3%的位置上约75分, 2.8%的位置上约94分。对应四分位数的就很好解释了,分...
2019-08-07 01:10:00
381
转载 C++(五十一) — 容器中常见算法(查找、排序、拷贝替换)
1、find(); find()算法的作用是在指定的一段序列中查找某个数,包含三个参数,前两个参数是表示元素范围的迭代器,第三个参数是要查找的值。 例:fing(vec.begin(), vec.end(), val); //在vec中查找值val,该val可以是数字、字符串。2、count(); count()算法的作用是查看给定序列中给定值出现的次数,同样...
2019-06-10 17:31:00
262
转载 C++(五十) — 容器中元素满足的条件
容器中的内容必须满足三个条件:(1)无参构造函数(2)拷贝构造函数(3)重载 = 运算符#define _CRT_SECURE_NO_WARNINGS#include <iostream>#include <algorithm>#include <vector>#include<functiona...
2019-06-10 11:35:00
247
转载 C++(四十九) — set、multiset 容器的基本操作
1、set的基础知识 set的特性是:所有元素都会根据元素的键值自动排序,set的元素不像map那样可以同时拥有实值(value)和键值(key),set元素的键值就是实值,实值就是键值。set不允许两个元素有相同的键值。 set的各成员函数列表如下:1. begin():返回指向第一个元素的迭代器;end():返回指向最后一个元素的迭代器;2.empty():如果...
2019-06-09 11:08:00
250
转载 C++(四十八) — string容器的基本操作
参考博客:https://blog.csdn.net/qq_37941471/article/details/82107077 https://www.cnblogs.com/danielStudy/p/7127564.html#top1、声明一个字符串标准库类型string表示可变长的字符序列,为了在程序中使用string类型,我们必须包含头文件:#inclu...
2019-06-08 12:41:00
209
转载 C++(四十七) — 文件输入、输出流
1、文件输入、输出流 由于文件设备并不像显示器屏幕与键盘那样是标准默认设备,不能像cout那样预先定义的全局对象,所以我们必须自己定义一个该类的对象。ifstream类,它是从istream类派生的,用来支持从磁盘文件的输入。ofstream类,它是从ostream类派生的,用来支持向磁盘文件的输出。fstream类,它是从iostream类派生的,用来支持对磁盘...
2019-06-08 10:13:00
173
转载 C++(四十六) — 异常处理机制、标准IO输入输出
1、异常处理机制 一般来说,异常处理就是在程序运行时对异常进行检测和控制。而在C++ 中,使用 try-throw-catch模式进行异常处理的机制。#include<iostream>using namespace std;int Fib(int n){ if (n <= 0) throw n; if...
2019-06-07 20:29:00
144
转载 C++(四十五) — 类型转换(static_cast、dynamic_cast 、const_cast、reinterpreter_cast)...
0、总结 (1)要转换的变量,转换前、转换后、转换后的结果。 (2)一般情况下,避免进行类型转换。1、_static_cast(静态类型转换,int 转换为char) 格式:TYPE B = static_cast<TYPE>(a) reinterpreter_cast(重新解释类型):专门用于指针类型的转换。void main()...
2019-06-07 11:08:00
192
转载 C++(四十四) — 数组模板类(vector工具)
实现 stl 中的 vector 操作。1、MyVector.h#pragma once#include <iostream>using namespace std;template <typename T>class MyVector{ friend ostream& operator<<...
2019-06-04 22:32:00
201
转载 C++(四十三) — 函数模板机制
1、普通函数与模板函数调用原则函数模板可以像普通函数一样被重载;当函数模板和普通函数都符合条件时,编译器优先考虑普通函数;但如果函数模板产生一个更好的匹配,则选择函数模板;可以通过空模板实参列表的语法,限制编译器只通过模板匹配;使用类型列表, max<>(a,b),强制要求使用函数模板;当都不满足类型条件时,会调用普通函数;因普通函数的调用,可以进行...
2019-06-04 18:51:00
116
转载 C++(四十二) — 函数模板多态
1、函数模板(参数多态) 相当于一个函数发生器,参数多态,可以重载。 普通函数和模板函数的本质区别:普通函数的调用,可以进行隐式的类型转换;函数模板的调用,使用类型参数化,严格按照类型进行匹配,不会进行类型的自动转换; 一个函数模板可以取代许多具体的函数定义,可以大大减少编程工作量。#include <iostream>#in...
2019-06-03 10:51:00
520
转载 C++(四十一) — 多态、虚函数、虚析构函数、纯虚函数
1、多态 面向对象程序设计中,多态性表现为: (1)重载多态:函数重载、运算符重载; (2)运行多态:通过基类的指针(或引用)调用不同派生类的同名函数,表现出不同的行为; (3)模板多态:参数多态,通过一个模板得到不同的函数或不同的类,具有不同的特性和不同的行为;2、同名覆盖与重载(1)override(同名覆盖) 在类的继承中才会出现,多...
2019-06-01 12:03:00
146
转载 C++(四十)— C++中一个class类对象占用多少内字节
一个空的class在内存中多少字节?如果加入一个成员函数后是多大?这个成员函数存储在内存中什么部分? 一个Class对象需要占用多大的内存空间。最权威的结论是:非静态成员变量总合。加上编译器为了CPU计算,作出的数据对齐处理。加上为了支持虚函数,产生的额外负担。 介绍完了理论知识后,再看看再找一个例子看看(注:一下所有结果都是在VC6.0 开发...
2019-06-01 10:05:00
167
转载 C++(三十九) — 主函数中增加调试信息
程序调试技术:(1)阅读程序,静态代码复查;(2)“cout大法”(3)使用开发工具,断点int main(){ TShape s(lu, lu); cout << __FILE__ << ": " << __LINE__ << " "; s.Draw(); TEl...
2019-05-31 11:35:00
152
转载 C++(三十八) — 继承方式、访问控制、构造和析构、虚继承
派生类继承了基类的所有成员,但不包含 构造函数、析构函数、默认赋值运算符。1、继承方式、访问控制 (1)protected属性:类的对象不能访问该属性成员,但派生类的成员函数可以访问基类的protected属性成员。 (2)无论哪种继承方式,派生类成员函数都可访问:public、protected ,但不能是基类的 private; (3)什...
2019-05-30 16:06:00
134
转载 C++(三十七) — 字符串的函数重载—案例
1、MyString.h 头文件#pragma once#include <iostream>using namespace std;class MyString{public: MyString(); MyString(const char *p); MyString(const MyString& ...
2019-05-26 18:32:00
284
转载 C++(三十六) — 等号操作符重载、&&,||不可重载
1、等号操作符重载,实现深拷贝//等号运算符重载// obj3=obj1;//原始的是浅拷贝,现在要重载为深拷贝Name& operator=(Name &obj1){ //1、先释放旧的内存 if (this->m_p != nullptr) { delete[] m_p; m_...
2019-05-24 10:22:00
396
转载 C++(三十五) — 运算符重载
运算符重载的实质:函数重载。除了增加一个关键字 operator 外,与函数重载没有区别,都是通过该类的某个对象来访问重载运算符。(1)重载运算符时,运算符运算顺序和优先级不变,操作数个数不变;(2)不能创造新的运算符;(3)形式:重载为类的成员函数。对象本身就是其中的一个操作数,所以形参表内参数的数目比操作数的数目少一个。 ...
2019-05-23 19:02:00
110
转载 C++(三十四) — 友元函数、友元类
友元是可以访问类的私有成员和保护成员的外部函数。由 friend 修饰,不是本类的成员函数,但是在它的函数体中可以通过对象名访问本类的私有和保护成员。 友元关系不可传递,且是单向的。 友元函数:声明为友元的一般函数或是另一个类的成员函数; 友元类:友元类的所有成员函数都是某个类的友元函数。应用场景较少。1、友元函数 应用于运算符重载多一些。...
2019-05-23 10:09:00
113
转载 C++(三十三) — 全局函数、成员函数的区别
1、类成员函数的初始化:(1)按照声明顺序初始化,而不是按出现在初始化列表中的顺序;2、区别:(1)全局函数的参数个数,比局部函数要多一个;(2)二者都可,返回元素、返回引用。class test {public: test(int a, int b) { this->a = a; ...
2019-01-15 12:23:00
3076
转载 C++(三十二) — 常对象、常成员变量、常成员函数
常量:对于既需要共享、又需要防止改变的数据。在程序运行期间不可改变。 const 修饰的是对象中的 this 指针。所以不能被修改。 this指针存在于类的成员函数中,指向被调用函数所在的类实例的地址。1、常对象 数据成员值在对象的整个生存期内不能改变。在定义时必须初始化,而且不能被更新。 常对象,只能调用常成员函数,保证常对象的数据成员不被改变。...
2019-01-04 10:31:00
204
转载 C++(三十一) — 静态成员变量、静态成员函数
1、静态成员变量 类的静态成员变量是,由该类的所以对象共同维护和使用的数据成员,每个类只有一个副本,是类数据成员的一种特例。采用 static 关键字声明。 目的:实现同一类中不同对象之间的数据共享。不包含 this 指针,因为是属于整个类的。 初始化必须在类外进行,类内声明,类外初始化。可以通过类名,或对象名访问。class student{publi...
2019-01-03 22:22:00
166
转载 C++(三十) — this 指针
1、如何区分多个对象调用同一个类函数? 类外部访问类成员,必须用对象来调用。一个类的所有对象在调用的成员函数,都执行同一段代码,那成员函数如何区分属于哪个对象呢? 在对象调用成员函数时,除接收实参外,还接受一个对象的地址。也就是隐含参数:this 指针(编译器自动实现). this 指针指出,成员函数当前所操作的数据所属的对象。不同对象调用成员函数时,this指针指向...
2019-01-03 21:44:00
113
转载 C++(二十九) — new 和 delete
1、基本用法,定义变量、数组、对象class test{public: test(int a_, int b_) { a = a_; b = b_; cout << "构造函数执行" << endl; } ~test() { c...
2019-01-03 11:47:00
96
转载 C++(二十八) — 构造函数的初始化列表
1、解决的问题: 在 B 类中,组合了一个 A 类对象,其中A类设计了构造函数。由于构造函数的调用规则,设计了构造函数就必须调用,但在定义B类时没有机会初始化A,因此采用构造函数的初始化列表来解决。2、构造和析构调用顺序 先执行被组合对象的构造函数,如果组合对象有多个,则按照定义顺序,而不是按照初始化列表顺序。 析构函数,和构造函数的调用顺序相反。 举...
2018-12-29 11:39:00
109
转载 C++(二十七) — 深拷贝、浅拷贝、复制构造函数举例
1、复制构造函数、及new空间申请 复制构造函数,也是构造函数。只在初始化时调用,如果定义对象后赋值,比如,t1=t2,则只是运算符重载,没有调用构造函数。注意: (1)复制构造函数是函数的形参是类的对象的引用的构造函数; (2)用一个已经存在的对象,初始化一个新的同类对象; (3)系统会自动生成一个默认复制构造函数,将成员一一复制; (...
2018-12-29 10:46:00
139
转载 C++(二十六) — 构造函数、析构函数、对象数组、复制构造函数
1、构造函数(1)每个类都要定义它自己的构造函数和析构函数,是类的成员函数。 特点:名称与类名相同;没有返回值;一定是共有函数,可以直接访问类内所有成员函数;可以带默认形参,可以重载;class clock{public: // 无参构造函数 clock() { cout << "无参构造函数" <...
2018-12-27 21:11:00
186
转载 C++(二十五) — 类的封装、实现、设计
1、类的封装、实现、对象的定义及使用(1)类是一组对象的抽象化模型。类对象将数据及函数操作集合在一个实体中,只需要接口,而不需要知道具体的操作。隐藏细节,模型化;类内自由修改;减少耦合,相当于一个轮子;(2)类的实现 类的函数,原型声明要在类的主体中,而函数的具体实现一般卸载类声明之外。如果在类声明时定义成员函数,都是内联函数。 还有,类内定义成员...
2018-12-27 17:58:00
209
转载 C++(二十四) — 指向字符的指针为什么可以用字符串来初始化,而不是字符地址?...
一、C语言中,为什么字符串可以赋值给字符指针变量?char *p;a='5';p=&a; //显然是正确的,p="abcd"; //但为什么也可以这样赋值??问:一直理解不了为什么可以将字串常量赋值给字符指针变量,请各位指点!答:双引号做了3件事:1.申请了空...
2018-12-20 21:22:00
309
转载 C++(二十三) — 内存泄漏及指针悬挂
1、内存泄漏 动态申请的内存空间没有正常释放,但也不能继续使用。 char *pch1 = 0; pch1 = new char('A'); // 此处申请的空间未被释放。 char *pch2 = new char; pch1 = pch2;2、指针悬挂 让指针指向一个已被释放的空间,该空间已不存在。 ch...
2018-12-20 21:21:00
171
转载 C++(二十二) — 指针变量、函数指针、void指针
1、指针变量(1)指针变量必须在初始化后才可以正常使用,初始化就是给他分配一个有效的数据地址。 先初始化,后使用。(2)指针可以进行加减运算,++ 或者 --:将指针的位置向前或者向后移动一个数据单元(char是一个格,int 是4个格子)。(3)指针之间直接相加没有意义,但相减是求出:两个指针间能存放几个指定类型的数据,不是地址值的具体差值。(4)不同类型指针之间...
2018-12-20 21:10:00
169
转载 C++(二十一) — 引用概念及本质
1、引用概念 引用是别名,必须在声明的时候初始化。即:是指一个已定义变量的别名。(一个内存空间,有两个名字都可以操作) 引用:在函数调用时,是变量的别名,不可以单独存在,使用时必须要初始化; 指针:本身有自己的地址,可以单独存在。2、引用基本举例 引用在交换时的例子:void myswap01(int a, int b){ int...
2018-12-20 11:36:00
95
转载 C++(二十) — 指针常量和常量指针
1、const 常量概念 对于 const 定义的常量,必须在定义时初始化,不能在程序执行运行过程中改变。2、指针常量、常量指针 区别 (1)技巧:从右向左读,替代方法: p:换为 p is a; * :换为 point to ;(2)const 在 * 左边:表示,指针指向为常量,不能改变内容;const 在 * 右边:指针本身是常量,...
2018-12-19 21:37:00
104
转载 C++(十九) — const 和 #define 区别
1、const (1)C++对 const 常量的处理过程:当编译器碰到 常量声明 时,在符号表中放入常量,编译时发现使用常量,则直接以符号表中的值替换。 (2)如果,编译中发现,对 const 使用 extern 或者 & 操作符时,则会给对应变量分配新的存储空间。 符号表保存的内容: key value a...
2018-12-19 20:56:00
99
转载 C++(十八) — 内存模式、堆和栈
1、内存模式 一个程序执行时,先复制到内存,然后CPU逐句读取指令执行。 每个存储单元存放一个字节(8bit)数据,每个有一个唯一的地址,地址是顺序编码的。比如:一台计算机256MB内存,则有256*1024*1024个内存单元,如果用7位十六进制数表示地址值,则范围是:0x0000000~0xFFFFFFF。 内存分配:(1)代码区:存放程序代码;(2)全...
2018-12-17 21:55:00
137
转载 C++(十七) — 宏代码、内联函数
1、C++ 表达式返回值 返回引用:当函数返回引用类型时,没有复制返回值。相反,返回的是对象本身。(与之对应的C语言中,返回的是变量的值) C++中,表达式返回的是变量本身(也就是变量对应的地址)。编译器帮我们完成 取地址的工作。2、引用与指针 引用是别名,必须在声明的时候初始化。 引用:在函数调用时,是变量的别名,不可以单独存在; 指针:本身...
2018-12-17 20:55:00
149
转载 C++(十六) — 类中引用成员函数、命名空间的使用
1、为什么类中引用成员函数? 类将属性和方法做了封装。类是一种数据类型,也就是:固定大小内存块的别名。 类的定义是一个抽象的概念,定义时不分配内存,当用类定义对象时,才分配一个固定大小的内存块。 此时,定义对象后,类内定义的变量就会执行一次初始化,但是主函数输出area时就是乱码,因为是直接去对应内存取值,而不是调用函数计算。 下面例子就说明了,类内成员函数的作用...
2018-12-15 21:53:00
456
转载 C++(十五) — sizeof 运算符
1、基本数据类型sizeof是一个关键字,它是一个编译时运算符,用于判断变量或数据类型的字节大小。sizeof 运算符可用于获取类、结构、共用体和其他用户自定义数据类型的大小。使用 sizeof 的语法如下:sizeof (data type)其中,data type 是要计算大小的数据类型,包括类、结构、共用体和其他用户自定义数据类型。请尝试下面的实例,理解 ...
2018-12-15 21:12:00
416
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人