08 2020 档案
摘要:map是STL的一个关联容器,它提供一对一的hash。 第一个可以称为关键字(key),每个关键字只能在map中出现一次;第二个可能称为该关键字的值(value); 由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一
阅读全文
摘要:多重继承: 一个子类继承了多个基类 #include<iostream> #include<string> class Phone { public: Phone(const std::string& num) :m_num(num) { } void call(const std::string&
阅读全文
摘要:#include<iostream> #include<string> class Base { public: Base(const std::string& name,int age):m_name(name),m_age(age) { } //输出操作符重载 friend std::ostre
阅读全文
摘要:子类拷贝构造函数 #include<iostream> class Base { public: Base(int i = 0) :m_i(i) { } Base(const Base& that) :m_i(that.m_i) { //基类拷贝构造 std::cout << "基类拷贝构造函数"
阅读全文
摘要:我想把三个常用的序列式放在一起对比一下是有必要的: vector : vector和built-in数组类似,拥有一段连续的内存空间,能非常好的支持随即存取,即[]操作符,但由于它的内存空间是连续的,所以在中间进行插入和删除会造成内存块的拷贝,另外,当插入较多的元素后,预留内存空间可能不够,需要重新
阅读全文
摘要:格式: class <派生类名>:<继承方式1><基类名1>,<继承方式2><基类名2>,… { <派生类类体> }; 继承方式:公有继承(public) 保护继承(protected) 私有继承(private) 默认 公有单继承 #include<iostream> #include<strin
阅读全文
摘要:四个迭代器类: iterator 正向非常迭代类 const iterator 正向常迭代类--const是修饰迭代器的目标,就是链表不能变 reverse_iterator 反向非常迭代类 const_reverse_iterator 反向常迭代类 八个迭代器对象: begin() 正向非常起始迭
阅读全文
摘要:pair是将2个数据组合成一组数据,当需要这样的需求时就可以使用pair。另一个应用是,当一个函数需要返回2个数据的时候,可以选择pair。 pair的实现是一个结构体,主要的两个成员变量是first second 因为是使用struct不是class,所以可以直接使用pair的成员变量 pair类
阅读全文
摘要:#include <queue>; // 头文件 先进先出: 普通队列 #include<iostream> #include <queue> #include<string> //创建队列对象 //格式:std::queue<数据类型> 对象名; int main() { std::queue<s
阅读全文
摘要:C++ Stack(堆栈) 是一个容器类的改编,为程序员提供了堆栈的全部功能,——也就是说实现了一个先进后出(FILO)的数据结构 需要:#include <stack> 栈(stack)是限制插入和删除只能在一个位置上进行的线性表,该位置在表的末端,叫做栈顶。添加元素只能在尾节点后添加,删除元素只
阅读全文
摘要:bind函数看做一个通用的函数适配器,它接受一个可调用函数,生成一个新的可调用函数 它可以把原可调用函数的某些参数预先绑定到给定的变量中,然后产生一个新的可调用函数 在c语言中, 回调函数的实现往往通过函数指针来实现。 但是在c++中 , 如果回调函数是一个类的成员函数。这时想把成员函数设置给一个回
阅读全文
摘要:引言 在c++入门中,很多人会接触swap(int&, int&)这样的函数类似代码如下: 这个函数只支持int参数,那么float、long等怎么办呢,函数重载需要好几个函数,很麻烦,我们可以使用模板 函数模板 模板函数定义的一般形式如下所示: template <typename 类型占位符>
阅读全文
摘要:void foo(const std::string& n) { std::cout << "左值lvalue" << std::endl; } void foo(std::string&& n) { std::cout << "右值rvalue" << std::endl; } int main(
阅读全文
摘要:chrono是C++11新加入的方便时间日期操作的标准库,它既是相应的头文件名称,也是std命名空间下的一个子命名空间,所有时间日期相关定义均在std::chrono命名空间下。通过这个新的标准库,可以非常方便进行时间日期相关操作。chrono库主要包含了三种类型:duration, time_po
阅读全文
摘要:多线程共享全局变量 C++11 新标准中引入了四个头文件来支持多线程编程,他们分别是<atomic> ,<thread>,<mutex>,<condition_variable>和<future>。 <atomic>:该头文主要声明了两个类, std::atomic 和 std::atomic_fl
阅读全文
摘要:单例模式:一个类只允许存在一个对象(或多个实例共用唯一的对象),并提供他的访问方法 实现思路: 禁止在类的外部创建对象:私有化构造函数即可 类的内部维护唯一的对象:静态成员变量 提供单例对象的访问方法:静态成员函数 具体创建方式: 饿汉式:单例对象无论用或不用,程序启动即创建 #include <i
阅读全文
摘要:普通成员函数可以访问所有成员(包括成员变量和成员函数),静态成员函数只能访问静态成员 编译器在编译一个普通成员函数时,会隐式地增加一个形参 this,并把当前对象的地址赋值给 this,所以普通成员函数只能在创建对象后通过对象来调用,因为它需要当前对象的地址。而静态成员函数可以通过类来直接调用,编译
阅读全文
摘要:有时候我们希望在多个对象之间共享数据,对象 a 改变了某数据后对象 b 可以检测到。共享数据的典型使用场景是计数 以 Student 类为例,如果我们想知道班级中共有多少名学生,就可以设置一份共享的变量,每次创建对象时让该变量加 1 在C++中,我们可以使用静态成员变量来实现多个对象共享数据的目标。
阅读全文
摘要:为什么使用赋值运算符重载函数? 对于系统的所有操作符,一般情况下,只支持基本数据类型和标准库中提供的class,对于用户自己定义的class或struct的对象,如果想支持基本操作,比如比较大小,判断是否相等,等等,则需要用户自己来定义关于这个操作符的具体实现。 比如,判断两个人是否一样大,我们默认
阅读全文
摘要:前面是指针用 -> 前面是变量名、对象名用 . 前面是名字空间名、类名用 :: 作用域运算符:: #include <iostream> int a = 200; void f() { int a = 100; std::cout << a<<std::endl; //输出100,a的值取局部变量值
阅读全文
摘要:基于C的文件操作 ,在ANSI C中,对文件的操作分为两种方式,即流式文件操作和I/O文件操作 一、流式文件操作 #include <stdlib.h> #include <iostream> using namespace std; int main() { FILE* fp; //创建文件指针
阅读全文
摘要:#include <iostream> using namespace std; int add(int a, int b) { return a + b; } int sub(int a, int b) { return a - b; } typedef int(*pfunc_t)(int a,
阅读全文
摘要:#include <iostream> using namespace std; void func(bool b) { if (b==true){ goto label; } else { goto label1; } label: cout << "真" << endl; return; lab
阅读全文
摘要:#include <iostream> #include <string> using namespace std; class Student { public: Student(const string& name1, int age1, int no1) { name = name1; age
阅读全文
摘要:C++ 标准库没有提供所谓的日期类型。C++ 继承了 C 语言用于日期和时间操作的结构和函数。为了使用日期和时间相关的函数和结构,需要在 C++ 程序中引用 <ctime> 头文件 time.h 头文件定义了四个变量类型、两个宏 四个变量类型: size_t是无符号整数类型,它是 sizeof 关键
阅读全文
摘要:#include <iostream> #include <string> using namespace std; class Student { /* 构造函数语法:类名(参数表){ } 注意:函数名与类名相同,没有返回值 构造函数在创建对象时,会自动执行,主要用来初始化 */ public:
阅读全文
摘要:定义类的格式: class 类名:继承方式 基类,......{ } #include <iostream> #include <string> using namespace std; class Student { //类默认都是私有的 //成员 private: string name; pu
阅读全文
摘要:public:公有 任何位置都可以访问 private:私有成员 只有类自己的成员函数才能访问 protected: 保护成员 只有类自己和子类的成员函数才能访问
阅读全文
摘要:隐试类型转换: char c = 'A'; int x = c; //隐试类型转换 cout << x << endl; 显式类型转换: //强制类型转换 char c = 'A'; int x = (int)c; //C风格 int y = int(c);//C++风格 C++扩展了四种操作符形式
阅读全文
摘要:#include <iostream> using namespace std; inline int add(int a, int b = 10) { //inline 内联函数--可以提高执行效率 //内联函数和普通函数的区别在于:当编译器处理调用内联函数的语句时,不会将该语句编译成函数调用的指
阅读全文
摘要:#include <iostream> using namespace std; int add(int a, int b = 10) { //b=10 缺省参数,缺省参数必须在右侧 //如果函数的声明和定义分开写,缺省参数只需写在声明部分就行,定义部分就不需要写了 return a + b; }
阅读全文
摘要:安装:pip install pymunk
阅读全文
摘要:什么时函数重载: 函数重载是指在同一作用域内,可以有一组具有相同函数名,不同参数列表的函数,这组函数被称为重载函数。重载函数通常用来命名一组功能相似的函数,这样做减少了函数名的数量,避免了名字空间的污染 这些同名函数的形参列表(参数“个数” 或 “类型” 或 “顺序”)必须不同,常用来处理实现功能类
阅读全文
摘要:&& 等价 and|| 等价 or{ 等价 <%} 等价 %>
阅读全文