- 博客(54)
- 收藏
- 关注
原创 【C++ 多线程编程|并发编程】
一个程序只有一个进程,该进程拥有至少一个线程。不同进程的地址空间不同,互不相关。同一进程下的不同线程共享同一个地址空间。C++11中引入了thread类和asyn函数来实现多线程。
2023-05-06 17:58:05
2513
2
原创 POJ1013称硬币 枚举法
题目:POJ1013称硬币题目描述:有12枚硬币。其中有11枚真币和1枚假币。假币和真币重量不同,但不知道假币比真币轻还是重。现在,用一架天平称了这些币三次,告诉你称的结果,请你找出假币并且确定假币是轻是重(数据保证一定能找出来)。●输入样例 注意:天平左右的硬币数总是相等的,even,up,down指的是天平右侧的状态2ABCD EFGH evenABCI EFJK upABIJ E...
2020-01-07 17:19:09
599
原创 POJ1222熄灯问题 枚举算法 经典的位运算应用
题目:POJ1222熄灯问题题目描述:有一个由按钮组成的矩阵,其中每行有6个按钮,共5行,每个按钮的位置上有一盏灯,当按下一个按钮后,该按钮以及周围位置(上边,下边,左边,右边)的灯都会改变状态。如果灯原来是点亮的,就会被熄灭;如果灯原来是熄灭的,则会被点亮。在矩阵角上的按钮改变3盏灯的状态;在矩阵边上的按钮改变4盏灯的状态;其他的按钮改变5盏灯的状态。与一盏灯毗邻的多个按钮被按下时,一个操作会...
2020-01-07 17:13:37
745
原创 位运算(按位与&、按位或|、按位异或^) 运算规则与实例
位运算(按位与、按位或、按位异或)按位与运算符(&)参加运算的两个数,按二进制位进行“与”运算。运算规则:同为1,结果为1,否则为0,即 0 & 0= 0 ,0 & 1= 0,1 & 0= 0, 1 & 1= 1。(负数按补码形式参加按位与运算)用法:(1)清零。如果想将一个单元清零,只要与各位都为零的数值相与,结果为零。比如:a&0,...
2020-01-07 17:06:01
16316
1
原创 中国大学MOOC程序设计与算法(三):C++ 面向对象程序设计 第十周 C++11新特性和C++高级主题 笔记 之 异常处理
第十周 C++11新特性和C++高级主题1.C++11新特性(一)2.C++11新特性(二)3.强制类型转换4.异常处理4.异常处理,课程最后一节程序运行发生异常程序运行中总难免发生错误(1)数组元素的下标超界、访问NULL指针(2)除数为0(3)动态内存分配new需要的存储空间太大……引起这些异常情况的原因可能是:(1)代码质量不高,存在BUG(2)输入数据不符合...
2019-12-28 17:41:16
308
原创 中国大学MOOC程序设计与算法(三):C++ 面向对象程序设计 第十周 C++11新特性和C++高级主题 笔记 之 强制类型转换
第十周 C++11新特性和C++高级主题1.C++11新特性(一)2.C++11新特性(二)3.强制类型转换4.异常处理3.强制类型转换四种运算符可以实现强制类型转换:static_cast、reinterpret_cast、const_cast和dynamic_cast。过去也有强制类型转换到额方式,比如(int)a,int(a),(A)a。问题是这些转换方式对转换的风险是不分类的...
2019-12-28 17:37:11
287
原创 中国大学MOOC程序设计与算法(三):C++ 面向对象程序设计 第十周 C++11新特性和C++高级主题 笔记 之 C++11新特性(二)
第十周 C++11新特性和C++高级主题1.C++11新特性(一)2.C++11新特性(二)3.强制类型转换4.异常处理2.C++11新特性(二)无序容器(哈希表)用法和功能和map是一样的,区别是哈希表的时间效率更高。map的插入和查询时间复杂度是log(N),而哈希表插入和查询的时间复杂度几乎是常数。代价是内存空间需要更大。#include <iostream>...
2019-12-28 17:33:24
224
原创 中国大学MOOC程序设计与算法(三):C++ 面向对象程序设计 第十周 C++11新特性和C++高级主题 笔记 之 C++11新特性(一)
第十周 C++11新特性和C++高级主题1.C++11新特性(一)2.C++11新特性(二)3.强制类型转换4.异常处理1.C++11新特性(一)C++2011年的新的标准,gcc4.8编译器完全支持C++11。统一的初始化方法int arr[3]{1, 2, 3};vector<int> iv{1, 2, 3};map<int, string> m...
2019-12-27 22:00:28
604
原创 中国大学MOOC程序设计与算法(三):C++ 面向对象程序设计 第九周 标准模板库STL(二) 笔记 之 STL算法(二)
第九周 标准模板库STL(二)1.set和multiset2.map和multimap3.容器适配器4.算法(一)5.算法(二)5.算法(二)(3)删除算法删除算法会删除一个容器里的某些元素。删除算法不应作用于关联容器。这里所说的“删除”,并不会使容器里的元素减少,不真正“删除”内存,只是覆盖掉该删除的位置,其工作过程是:将所有应该被删除的元素看做空位子,然后用留下的元素从...
2019-12-27 21:54:26
325
原创 中国大学MOOC程序设计与算法(三):C++ 面向对象程序设计 第九周 标准模板库STL(二) 笔记 之 STL算法(一)
第九周 标准模板库STL(二)1.set和multiset2.map和multimap3.容器适配器4.算法(一)5.算法(二)4.算法(一)STL中的算法大致可以分为以下七类:(1)不变序列算法(2)变值算法(3)删除算法(4)变序算法(5)排序算法(6)有序区间算法(7)数值算法大多重载的算法都是有两个版本的,其中一个是用“==”判断元素是否相等,或用“<”...
2019-12-27 21:45:52
376
原创 中国大学MOOC程序设计与算法(三):C++ 面向对象程序设计 第九周 标准模板库STL(二) 笔记 之容器适配器
第九周 标准模板库STL(二)1.set和multiset2.map和multimap3.容器适配器4.算法(一)5.算法(二)3.容器适配器容器适配器:stack, queue, priority_queue容器适配器和容器的一个区别是***容器适配器没有迭代器,所以STL里面的一些算法不适用于容器适配器,只用容器适配器本身的成员函数。***stack栈stack 是后进...
2019-12-26 21:58:28
277
原创 中国大学MOOC程序设计与算法(三):C++ 面向对象程序设计 第九周 标准模板库STL(二) 笔记 之 map和multimap
第九周 标准模板库STL(二)1.set和multiset2.map和multimap3.容器适配器4.算法(一)5.算法(二)2.map和multimapmap与set的不同在于map中存放的元素有且仅有两个成员变量,一个名为first,另一个名为second, map根据first值对元素进行从小到大排序,并可快速地根据first来检索元素。map同multimap的不同在于是...
2019-12-26 21:55:16
318
原创 中国大学MOOC程序设计与算法(三):C++ 面向对象程序设计 第九周 标准模板库STL(二) 笔记 之 set和multiset
第九周 标准模板库STL(二)1.set和multiset2.map和multimap3.容器适配器4.算法(一)5.算法(二)1.set和multiset容关联器:set, multiset, map, multimap内部元素有序排列,新元素插入的位置取决于它的值,查找速度快。set 即集合。set中不允许相同元素,multiset中允许存在相同的元素。map与set的...
2019-12-26 21:51:34
400
原创 中国大学MOOC程序设计与算法(三):C++ 面向对象程序设计 第八周 标准模板库STL(一) 笔记 之 函数对象
第八周 标准模板库STL(一)1.string类2.标准模板库STL概述(一)3.标准模板库STL概述(二)4.vector,deque和list5.函数对象5.函数对象函数对象如果一个类重载了运算符“()”,则该类的对象就都是函数对象。函数对象也是对象,但是用起来看上去和函数非常像,实际上是执行了成员函数的调用。class CMyAverage { public: d...
2019-12-26 21:47:04
327
原创 中国大学MOOC程序设计与算法(三):C++ 面向对象程序设计 第八周 标准模板库STL(一) 笔记 之 vector,deque和list
第八周 标准模板库STL(一)1.string类2.标准模板库STL概述(一)3.标准模板库STL概述(二)4.vector,deque和list5.函数对象4.vector,deque和listvector可变长数组根据下标访问时间复杂度是O(1),常量时间,在尾部添加、删除元素的时间复杂度是O(1),在中间添加、删除元素的时间复杂度是O(n)。以下是几个关于vector构造...
2019-12-26 21:43:07
257
原创 中国大学MOOC程序设计与算法(三):C++ 面向对象程序设计 第八周 标准模板库STL(一) 笔记 之 标准模板库STL概述(二)
第八周 标准模板库STL(一)1.string类2.标准模板库STL概述(一)3.标准模板库STL概述(二)4.vector,deque和list5.函数对象3.标准模板库STL概述(二)迭代器:用于访问容器中的元素,类似指针 用于指向顺序容器和关联容器中的元素 迭代器用法和指针类似 有const 和非const两种 通过迭代器可以读取它指向的元素 通过非co...
2019-12-25 22:03:50
315
原创 中国大学MOOC程序设计与算法(三):C++ 面向对象程序设计 第八周 标准模板库STL(一) 笔记 之 标准模板库STL概述(一)
第八周 标准模板库STL(一)1.string类2.标准模板库STL概述(一)3.标准模板库STL概述(二)4.vector,deque和list5.函数对象2.标准模板库STL概述(一)标准模板库STL:Standard Template Library泛型程序设计C++ 语言的核心优势之一就是便于软件的重用C++中有两个方面体现重用:(1)面向对象的思想:继承和多态,...
2019-12-25 21:59:21
378
原创 中国大学MOOC程序设计与算法(三):C++ 面向对象程序设计 第八周 标准模板库STL(一) 笔记 之 string类
第八周 标准模板库STL(一)1.string类2.标准模板库STL概述(一)3.标准模板库STL概述(二)4.vector,deque和list5.函数对象1.string类string 类string 类是模板类:typedef basic_string string;使用string类要包含头文件 string对象的初始化:string s1("Hello");s...
2019-12-25 21:55:13
244
原创 中国大学MOOC程序设计与算法(三):C++ 面向对象程序设计 第七周 输入输出和模板 笔记 之 类模板与派生、友元和静态成员变量
第七周 输入输出和模板1.输入输出流相关的类2.用流操纵算子控制输出格式3.文件读写(一)4.文件读写(二)5.函数模板6.类模板7.类模板与派生、友元和静态成员变量7.类模板与派生、友元和静态成员变量类模板与派生类模板与派生包括以下内容:(1)类模板从类模板派生;(2)类模板从模板类派生;(3)类模板从普通类派生;(4)普通类从模板类派生。用的不多。(1)类模板从类模板...
2019-12-25 17:21:51
213
原创 中国大学MOOC程序设计与算法(三):C++ 面向对象程序设计 第七周 输入输出和模板 笔记 之 类模板
第七周 输入输出和模板1.输入输出流相关的类2.用流操纵算子控制输出格式3.文件读写(一)4.文件读写(二)5.函数模板6.类模板7.类模板与派生、友元和静态成员变量6.类模板如果要写多个很相似的类,可以先写一个模板,然后用这个模板实例化类模板 – 问题的提出为了多快好省地定义出一批相似的类,可以定义类模板,然后由类模板生成不同的类。比如,数组是一种常见的数据类型,元素...
2019-12-25 17:17:44
230
原创 中国大学MOOC程序设计与算法(三):C++ 面向对象程序设计 第七周 输入输出和模板 笔记 之 函数模板
第七周 输入输出和模板1.输入输出流相关的类2.用流操纵算子控制输出格式3.文件读写(一)4.文件读写(二)5.函数模板6.类模板7.类模板与派生、友元和静态成员变量5.函数模板C++为了提高程序的可重用性,一方面有继承机制,另一方面采用泛型程序设计,也就是模板(函数模板和类模板)。函数模板:如果要写多个很相似的函数,可以先写一个模板,然后用这个模板实例化。例子:交换两...
2019-12-25 17:14:23
278
原创 中国大学MOOC程序设计与算法(三):C++ 面向对象程序设计 第七周 输入输出和模板 笔记 之 文件读写(二)
第七周 输入输出和模板1.输入输出流相关的类2.用流操纵算子控制输出格式3.文件读写(一)4.文件读写(二)5.函数模板6.类模板7.类模板与派生、友元和静态成员变量4.文件读写(二)二进制文件读写二进制读文件:ifstream 和 fstream的成员函数:istream& read (char* s, long n);将文件读指针指向的地方的n个字节内容,读...
2019-12-24 21:54:06
235
原创 中国大学MOOC程序设计与算法(三):C++ 面向对象程序设计 第七周 输入输出和模板 笔记 之 文件读写(一)
第七周 输入输出和模板1.输入输出流相关的类2.用流操纵算子控制输出格式3.文件读写(一)4.文件读写(二)5.函数模板6.类模板7.类模板与派生、友元和静态成员变量3.文件读写(一)文件和流是一回事,可以将顺序文件看作一个有限字符构成的顺序字符流,然后像对cin, cout 一样的读写。回顾一下输入输出流类的结构层次:istream是用于输入的流类,cin就是该类的对象。...
2019-12-24 21:51:06
312
原创 中国大学MOOC程序设计与算法(三):C++ 面向对象程序设计 第七周 输入输出和模板 笔记 之 用流操纵算子控制输出格式
第七周 输入输出和模板1.输入输出流相关的类2.用流操纵算子控制输出格式3.文件读写(一)4.文件读写(二)5.函数模板6.类模板7.类模板与派生、友元和静态成员变量2.用流操纵算子控制输出格式流操纵算子控制输出的格式使用流操纵算子需要 #include 控制整数进制的流操纵算子流操纵算子dec,oct,hex,setbase分别设置为十进制、十进制、十六机制、任...
2019-12-24 21:47:48
273
原创 中国大学MOOC程序设计与算法(三):C++ 面向对象程序设计 第七周 输入输出和模板 笔记 之 输入输出流相关的类
第七周 输入输出和模板1.输入输出流相关的类2.用流操纵算子控制输出格式3.文件读写(一)4.文件读写(二)5.函数模板6.类模板7.类模板与派生、友元和静态成员变量1.输入输出流相关的类派生关系istream是用于输入的流类,cin就是该类的对象。ostream是用于输出的流类,cout就是该类的对象。ifstream是用于从文件读取数据的类。ofstream是用于向...
2019-12-24 21:43:39
297
原创 中国大学MOOC程序设计与算法(三):C++ 面向对象程序设计 第六周 多态 笔记 之 虚析构函数、纯虚函数和抽象类
第六周 多态1.虚函数和多态的基本概念2.多态实例:魔法门之英雄无敌3.更多多态程序实例4.多态的实现原理5.虚析构函数、纯虚函数和抽象类5.虚析构函数、纯虚函数和抽象类虚析构函数通过基类的指针删除派生类对象时,通常情况下只调用基类的析构函数但是,删除一个派生类的对象时,应该先调用派生类的析构函数,然后调用基类的析构函数。解决办法:把基类的析构函数声明为virtual...
2019-12-24 12:51:12
299
1
原创 中国大学MOOC程序设计与算法(三):C++ 面向对象程序设计 第六周 多态 笔记 之 多态的实现原理
第六周 多态1.虚函数和多态的基本概念2.多态实例:魔法门之英雄无敌3.更多多态程序实例4.多态的实现原理5.虚析构函数、纯虚函数和抽象类4.多态的实现原理“多态”的关键在于通过基类指针或引用调用一个虚函数时,编译时不确定到底调用的是基类还是派生类的函数,运行时才确定 ---- 这叫“动态联编”。“动态联编” 底是怎么实现的呢?例子:class Base { public: ...
2019-12-24 12:48:13
279
原创 中国大学MOOC程序设计与算法(三):C++ 面向对象程序设计 第六周 多态 笔记 之 更多多态程序实例
第六周 多态1.虚函数和多态的基本概念2.多态实例:魔法门之英雄无敌3.更多多态程序实例4.多态的实现原理5.虚析构函数、纯虚函数和抽象类3.更多多态程序实例实例1 几何形体处理程序:输入若干个几何形体的参数,要求按面积排序输出。输出时要指明形状。Input:第一行是几何形体数目n(不超过100).下面有n行,每行以一个字母c开头.若 c 是 ‘R’,则代表一个矩形,本行后...
2019-12-23 21:54:48
821
原创 中国大学MOOC程序设计与算法(三):C++ 面向对象程序设计 第六周 多态 笔记 之 多态实例:魔法门之英雄无敌
第六周 多态1.虚函数和多态的基本概念2.多态实例:魔法门之英雄无敌3.更多多态程序实例4.多态的实现原理5.虚析构函数、纯虚函数和抽象类2.多态实例:魔法门之英雄无敌游戏中有很多种怪物,每种怪物都有一个类与之对应,每个怪物就是一个对象。假设现在有五种怪物,也就是现有五个类:CSoldier,CDragon,Cwolf,CPhonex,CAngel。怪物能够互相攻击,攻击敌人和被攻击...
2019-12-23 21:51:19
666
原创 中国大学MOOC程序设计与算法(三):C++ 面向对象程序设计 第六周 多态 笔记 之 虚函数和多态的基本概念
第六周 多态1.虚函数和多态的基本概念2.多态实例:魔法门之英雄无敌3.更多多态程序实例4.多态的实现原理5.虚析构函数、纯虚函数和抽象类1.虚函数和多态的基本概念虚函数在类的定义中,前面有 virtual 关键字的成员函数就是虚函数。class base { virtual int get() ;};int base::get(){ }virtual 关键字只用在...
2019-12-23 21:49:02
307
原创 中国大学MOOC程序设计与算法(三):C++ 面向对象程序设计 第五周 继承 笔记 之 公有(public)继承的赋值兼容原则
第五周 继承1.继承和派生的基本概念2.继承关系和复合关系3.覆盖和保护成员4.派生类的构造函数5.公有(public)继承的赋值兼容原则5.公有(public)继承的赋值兼容原则最常见的公有(public)继承class base { };class derived : public base { };base b;derived d;公有(public)继承的赋...
2019-12-23 19:37:47
363
原创 中国大学MOOC程序设计与算法(三):C++ 面向对象程序设计 第五周 继承 笔记 之 派生类的构造函数
第五周 继承1.继承和派生的基本概念2.继承关系和复合关系3.覆盖和保护成员4.派生类的构造函数5.公有(public)继承的赋值兼容原则4.派生类的构造函数class Bug { private : int nLegs; int nColor; public: int nType; Bug ( int legs, int color); void PrintBu...
2019-12-23 19:34:41
241
原创 中国大学MOOC程序设计与算法(三):C++ 面向对象程序设计 第五周 继承 笔记 之 覆盖和保护成员
第五周 继承1.继承和派生的基本概念2.继承关系和复合关系3.覆盖和保护成员4.派生类的构造函数5.公有(public)继承的赋值兼容原则3.覆盖和保护成员派生类覆盖基类成员派生类可以定义一个和基类成员同名的成员,这叫覆盖。在派生类中访问这类成员时,缺省的情况(不交代访问的是哪一个)是访问派生类中定义的成员。要在派生类中访问由基类定义的同名成员时,要使用作用域符号::。cla...
2019-12-23 19:21:13
187
原创 中国大学MOOC程序设计与算法(三):C++ 面向对象程序设计 第五周 继承 笔记 之 继承关系和复合关系
第五周 继承1.继承和派生的基本概念2.继承关系和复合关系3.覆盖和保护成员4.派生类的构造函数5.公有(public)继承的赋值兼容原则2.继承关系和复合关系类和类之间可能存在的关系有三种:1)没关系;2)继承关系;3)复合关系继承:“是”关系。– 基类A,B是基类A的派生类。– 逻辑上要求:“一个B对象也是一个A对象”。复合:“有”关系。– 类C中“有”成员变量k,k...
2019-12-23 19:18:57
322
原创 中国大学MOOC程序设计与算法(三):C++ 面向对象程序设计 第五周 继承 笔记 之 继承和派生的基本概念
第五周 继承1.继承和派生的基本概念2.继承关系和复合关系3.覆盖和保护成员4.派生类的构造函数5.公有(public)继承的赋值兼容原则1.继承和派生的基本概念继承:在定义一个新的类B时,如果该类与某个已有的类A相似(指的是B拥有A的全部特点),那么就可以把A作为一个 基类,而把B作为基类的一个 派生类( 也称子类) 。派生类是通过对基类进行修改和扩充得到的。在派生类中,可以...
2019-12-23 19:15:48
207
原创 中国大学MOOC程序设计与算法(三):C++ 面向对象程序设计 第四周 运算符重载 笔记 之
第四周 运算符重载1.运算符重载的基本概念2.赋值运算符的重载3.运算符重载为友元函数4.运算符重载实例:可变长数组类的实现5.流插入运算符和流提取运算符的重载6.类型转换运算符、自增自减运算符的重载6.类型转换运算符、自增自减运算符的重载重载类型转换运算符:把对象转换成另一种类型类型转换运算符重载时函数返回值是不用写的,默认就是这个类型本身。#include <io...
2019-12-22 21:52:04
270
原创 中国大学MOOC程序设计与算法(三):C++ 面向对象程序设计 第四周 运算符重载 笔记 之 流插入运算符和流提取运算符的重载
第四周 运算符重载1.运算符重载的基本概念2.赋值运算符的重载3.运算符重载为友元函数4.运算符重载实例:可变长数组类的实现5.流插入运算符和流提取运算符的重载6.类型转换运算符、自增自减运算符的重载5.流插入运算符和流提取运算符的重载cout << 5 << “this”;为什么能够成立?cout是什么?“<<” 为什么能用在 cout上?...
2019-12-22 21:49:57
341
原创 中国大学MOOC程序设计与算法(三):C++ 面向对象程序设计 第四周 运算符重载 笔记 之 运算符重载实例:可变长数组类的实现
第四周 运算符重载1.运算符重载的基本概念2.赋值运算符的重载3.运算符重载为友元函数4.运算符重载实例:可变长数组类的实现5.流插入运算符和流提取运算符的重载6.类型转换运算符、自增自减运算符的重载4.运算符重载实例:可变长数组类的实现int main() { //要编写可变长整型数组类,使之能如下使用: CArray a; //开始里的数组是空的 for( int i = ...
2019-12-22 21:48:05
386
原创 中国大学MOOC程序设计与算法(三):C++ 面向对象程序设计 第四周 运算符重载 笔记 之 运算符重载为友元函数
第四周 运算符重载1.运算符重载的基本概念2.赋值运算符的重载3.运算符重载为友元函数4.运算符重载实例:可变长数组类的实现5.流插入运算符和流提取运算符的重载6.类型转换运算符、自增自减运算符的重载3.运算符重载为友元函数一般情况下,将运算符重载为类的成员函数,是较好的选择。但有时,重载为成员函数不能满足使用要求,重载为普通函数,又不能访问类的私有成员,所以需要将运算符重载为友...
2019-12-22 21:46:32
338
原创 原创 中国大学MOOC程序设计与算法(三):C++ 面向对象程序设计 第四周 运算符重载 笔记 之 赋值运算符的重载
第四周 运算符重载1.运算符重载的基本概念2.赋值运算符的重载3.运算符重载为友元函数4.运算符重载实例:可变长数组类的实现5.流插入运算符和流提取运算符的重载6.类型转换运算符、自增自减运算符的重载2.赋值运算符的重载有时候希望赋值运算符两边的类型可以不匹配,比如,把一个int类型变量赋值给一个Complex对象,或把一个 char * 类型的字符串赋值给一个字符串对象,此时就需...
2019-12-22 21:44:50
304
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人