自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 输入一个数,从1开始只能+1或*2,求得到这个数的最少计算次数

#include<iostream>using namespace std;int count1(int n) { if (n <= 1) return 0; int count = 0; while (n > 1) { if (n % 2 == 1) count += 2; else...

2019-08-26 15:54:45 974

原创 操作系统(二)

进程的基本概念在一个并发环境下,为了刻画这些并发程序执行,引入进程的概念。进程是具有独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的独立单位。PCB包含什么信息?进程描述信息,进程控制信息,所拥有的资源和使用情况,CPU现场信息。进程地址空间是虚拟地址空间。每个进程都有一个地址空间,地址相同是指的mywal在地址空间的位置相同,而不是物理内存的位置。分...

2019-03-06 21:52:45 320

原创 操作系统(一)

操作系统做了什么对应ppt看用户告诉操作系统执行helloworld程序(如何告知?)操作系统:在磁盘中找到helloworld程序的相关信息, 检查其类型是否是可执行文件;并通过程序首部信息,确定代码和数据在可执行文件中的位置并计算出对应的磁盘块地址(文件格式? windows是pe格式,Linux是elf)操作系统: 创建一个新的进程,并将helloworld可执行文件映射到该进...

2019-02-26 22:34:26 320

原创 C++内存管理 侯捷(一)

malloc超级重要。四个层面的基本用法:void *p1 = malloc(512);free(p1);complex&lt;int&gt;* p2 = new complex&lt;int&gt;;//new后面跟的class名称,那么类型就确定了,所以得到的指针也要指向那个类型delete p2;void *p3 = ::operator new(512);::o...

2019-02-17 19:35:03 952

原创 C++新标准 侯捷(三) 标准库

14.右值引用之所以放在标准库,是因为它虽是语言的部分,但接下来的东西都与标准库有关。可以帮忙解决不必要的copy。当赋值右边是一个右值时,左边的对象可以偷右边对象的资源。Lvalue :可以出现于operator=左侧者;Rvalue:只能出现于operator=右侧者。我们试验发现,整数中a+b=42是不可以的,而字符串中s1+s2=s2,复数中c1+c2=cpmp...

2019-02-13 18:44:13 431

原创 C++新标准 侯捷(二) 语言(中)

11.decltype 可以让编译器找出一个表达式的类型,相当于typeof特性。map&lt;string,float&gt; coll;decltype(coll)::value_type elem;//map&lt;string,float&gt;::value_type elem;1.用来声明返回类型,比如:template&lt;typename T1,typena...

2019-02-12 15:36:16 265

原创 C++新标准 侯捷(一) 语言(上)

C++2.0新特性包括语言和标准库两个层面,后者以头文件形式呈现。Compiler support for C++11 and C++14等网站用于查询自己的编译器对C++2.0的支持度目录1.variadic templates(可变参数模板)2.Spaces in Template Expression、nullptr and std--nullptr_t、Automatic ...

2019-02-08 22:04:40 559

原创 C++ STL源码剖析与泛型编程(侯捷)(九) 第四讲

一个万用的哈希函数函数对象作为哈希函数,设置不定序容器时,规定&lt;容器中的元素,hash 函数对象名&gt;,相比普通函数简便太多。左边把3个特化版本的哈希函数算出的哈希码加起来。“太天真”,换成左边的版本。typename...   代表着任意多参数。(可变化模板variadic templates)hash_val先调用1,再调用2,2就再调用4,seed就变了,然后再...

2019-01-26 16:02:35 393

原创 C++源码剖析和泛型编程(侯捷)(八) 仿函数和适配器

仿函数当你要求一些特殊的准则时,就需要一般函数或仿函数的形式来告诉算法。又称函数对象,为算法提供一些自定义的函数规则(例如以特定的条件实现累计 accumulate)。 规模较小,比较容易由用户自己实现,并加入标准库中作为自己应用的部分。 仿函数本质是一个类(struct),类中必须实现重载小括号(operator())使用时通过加上()来成为临时对象调用。分类:算术类(加减),逻辑...

2019-01-25 20:39:53 268

原创 C++源码剖析与泛型编程(侯捷)(七) 算法

C++标准库的算法,是什么东西?从语言层面上讲:容器Container是个class template 算法Algorithm是个function template 迭代器Iterator是个class template 仿函数Functor是个class template 适配器Adapter是个class template 分配器Allocator是个class templa...

2019-01-23 16:45:46 244

转载 C++STL源码剖析(侯捷)(六) hashtable、无序容器

哈希表避免碰撞 — 构造哈希函数、再散列函数法、哈希表加链表1.虽然很好的处理了碰撞的问题,但是当单链表很长时,遍历链表的速度会很慢。2.当链表太长时(经验法则:当元素个数比 bucket &lt;vector&gt; 数还要多时),想办法将其打散 — 将 bucket 扩充大约两倍。选择53的倍数附近的素数 53 -&gt; 97 -&gt; 193........。(G2.9适用...

2019-01-22 14:46:03 600

原创 C++ STL标准库与泛型编程 (侯捷)(五)红黑树、Set、Map

关联式容器,查找与元素的安插效率都很高,相当于一个小型的数据库(用 key 去寻找数据)。其底层实现是基于两个重要的技术:红黑树、散列表。容器红黑树原文:https://blog.csdn.net/SimonxxSun/article/details/85264200key和data合成为value。图中举例时,只给定一个int,代表key和data是一致的。标准库提供的函数id...

2019-01-21 12:43:47 652 1

转载 C++源码剖析与泛型编程(侯捷)(四) Deque、Queue和Stack深度探索

容器Deque内存中是分段连续的缓冲区buffer,每次扩充时,扩充一个固定的 buffer 大小。Deque的first指针指向一个buffer中的头,last指向同一个buffer的尾,node告诉控制中心map(vector实现,可不是map容器哦)的位置,cur指向当前元素,会随着++或者--变化。当然,如果跳到下一缓冲区,first和last自然也会变。另外还有两个start,f...

2019-01-19 17:13:01 186

原创 C++STL源码剖析与泛型编程 (侯捷)(三) Vector、Array

一.容器Vector动态增长数组 —— vector容量增长的本质:每次空间不够时,容器适配器会在另一个内存空间将待用空间多次的两倍扩张(1.2.4.8........),安排好扩张内存后将所有值复制过去。Vector 对象的大小就是3个指针的大小,12个字节。(32位操作系统下)所有对于 vector 的操作都是基于这三个指针的。除了*与long随操作系统子长变化而变化外,其他的都固...

2019-01-18 19:25:44 384 1

转载 C++ STL源码剖析与泛型编程(侯捷) (二) 分配器、List、迭代器

一. 分配器 allocators1. operator new() 和 malloc()所有C++平台上的分配动作,最后都会调用 malloc(),销毁都会用 free(),然后根据在不同的系统(win linux unix)下去调用不同的 API 实现内存的索取。malloc()实际分配的空间内存大小会比要求的大,会加上 cookies (记录了本次申请的模块大小) 等 额外开销,...

2019-01-18 16:45:31 391

原创 C++ STL标准库与泛型编程(一)概述

一.用于查询的网站www.cplusplus.comen.cpprefence.comgcc.gnu.org二.STL体系结构STL标准库约占C++标准库的85%,其中含有六大部件。 容器、算法、迭代器、仿函数、适配器、分配器。以及一些小的部分。迭代器:相当于泛化的指针。allocator 一般有默认值,显示化时,其参数类型要与容器类型匹配,否则编译出错。c...

2019-01-17 17:44:31 366

原创 深度探索C++对象模型 侯捷

目录什么是C++对象模型第一章 关于对象1.1 C++对象模式1.2 关键词所带来的差异1.3 对象的差异多态指针的类型第二章 构造函数语意学2.1 Default Constructor的构造操作2.2 拷贝构造器的构造操作2.3 程序转化语意学2.4 成员们的初始化队伍第三章 Data语意学3.1...

2019-01-15 17:56:03 2751

原创 大话数据结构

基本概念(参考了小草莓|||||博主的《数据结构基础概念篇》)目录基本概念(参考了小草莓|||||博主的《数据结构基础概念篇》)线性表——零个或多个数据元素的有限序列1.顺序表a.线性表的顺序存储结构:把线性表的结点按逻辑顺序依次存放在一组地址连续的存储单元里。用这种方法存储的线性表简称顺序表。是一种随机存取结构。2.线性链表栈和队列栈栈的应用队列串...

2018-12-18 15:09:09 302

原创 第15章 面向对象程序设计

15.1  概述派生类与基类的关系类似于:是一种;类型之间的关系类似于:有一个。1.OOP的核心思想是数据抽象、继承和动态绑定。(多态性)使用数据抽象,可以将类的接口与实现分离;使用继承,可以定义相似的类型并对其相似关系建模;使用动态绑定,可以在一定程度上忽略相似类型的区别,而以统一的方式使用它们的对象。2.动态绑定又被称为运行时绑定,即函数的运行版本由实参决定,在...

2018-11-20 17:37:39 220

原创 第十三章笔记 拷贝控制

一个类通过定义五种特殊的成员函数来控制这些操作,包括:拷贝构造函数(copy construcor),拷贝赋值运算符(copy-assignment operator)、移动构造函数(move constructor)、移动赋值运算符(move-assignment operator)和析构函数(destructor)。 1.拷贝构造函数1.拷贝构造函数的第一个参数必须是一个引用类型。...

2018-11-13 19:12:07 149

原创 第十二章笔记-动态内存与智能指针

1.c++11新标准库提供了两种智能指针类型来管理动态对象,只能指针的行为类似常规指针,区别是它自动释放所指向的内存。头文件#include &lt;memory&gt;两种智能指针:shared_ptr:允许多个指针指向同一个对象。unique_ptr:独占所指向的对象。伴随类weak_ptr:指向share_ptr所管理的对象 2.使用了动态生存期的资源的类程序使用动...

2018-11-08 21:53:16 127

原创 第七章笔记

访问权限的探讨1.IO类属于不能被拷贝的类型,只能通过引用来传递它们。2.执行输出的函数应该尽量减少对格式的控制,这样可以确保由用户代码来决定是否换行。3.友元的声明只能在类定义的内部,友元的声明仅仅指定了访问的权限,而非一个通常意义上的函数声明。4.友元不具有传递性,每个类负责控制自己的友元类或友元函数。友元只影响访问权限,而非普通意义上的声明。对于作用域的探讨1.类的定...

2018-11-06 19:13:14 118

原创 第六章笔记

​​​​顶层const与底层const的区别: 顶层const是指针对象本身是一个常量,而底层const是指针所指的对象是一个常量,理解起来就相当于前者是直接,后者是间接。  声明函数可以多次,但是每个形参只能用实参默认初始化一次, 即后续声明只可以为未默认初始化的形参添加默认实参,而且其形参右侧的所有形参必须都有默认值。 string make_plural(size_t c...

2018-08-25 10:23:17 162

原创 第三章习题

习题3.17#include&lt;iostream&gt;#include&lt;vector&gt;#include&lt;string&gt;using namespace std;int main() {string in;vector&lt;string&gt; text;while (cin &gt;&gt; in) {text.push_back(in);...

2018-07-31 16:17:39 233

原创 第三章笔记

 1.size_type类型P79在具体使用时,通过作用域操作符来表明名字size_type是在类string中定义的 2.迭代器类型有三种不同的含义,可能是迭代器概念本身,也可能是指容器定义的迭代器类型,还可能是某个迭代器对象。  3.指针和数组当使用数组作为一个auto变量的初始值时,得到的类型是指针。   ...

2018-07-31 16:17:27 130

原创 C++primer第二章笔记

1.如果两个字符串字面值位置紧邻且仅由空格、缩进和换行符分隔,则它们实际上是一个整体。运行结果:

2018-06-25 19:22:07 238

原创 C++primer第一章笔记

1.2 初识输入输出std::cout&lt;&lt;std::endl 输出了一个换行符,类似于C中的转义字符。

2018-05-28 16:32:57 152

原创 C++primer第一章习题

练习1.1-2 返回0为正常值,返回其他值在书中说是会被当作程序错误的标识,但在vs中运行并没有看出太多区别。  

2018-05-11 16:42:47 121

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除