自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Python namedtuple 具名元组

Python中的tuple是一个非常高效的集合对象,但是我们只能通过索引的方式访问这个集合中的元素,比如下面的代码:Bob=('bob',30,'male') print 'Representation:',Bob Jane=('Jane',29,'female') print 'Field by index:',Jane[0] for people in [Bob,Jane]:

2017-06-01 23:28:45 1340

原创 python列表推导

1.列表推导式书写形式:  [表达式 for 变量 in 列表] 或者 [表达式 for 变量 in 列表 if 条件]2.举例说明:li = [1,2,3,4,5,6,7,8,9]print [x**2 for x in li]print [x**2 for x in li if x>5]print dict([(x,x*10) for x in li])print [ (x,

2017-06-01 23:28:16 430

原创 C++拷贝构造函数

C++拷贝构造函数构造函数是干什么的?该类对象被创建时,编译系统对象分配内存空间,并自动调用该构造函数,由构造函数完成成员的初始化工作,故:构造函数的作用:初始化对象的数据成员。构造函数的种类 1 class Complex 2 { 3 4 private : 5 double m_real; 6 double m_imag; 7 8 pub

2017-05-30 22:45:07 593

转载 C++ 析构函数

C++ 析构函数设计一个类时,如何写析构函数? 析构函数如果我们不写的话,C++ 会帮我们自动的合成一个,就是说:C++ 会自动的帮我们写一个析构函数。很多时候,自动生成的析构函数可以很好的工作,但是一些重要的事迹,就必须我们自己去写析构函数。 析构函数和构造函数是一对。构造函数用于创建对象,而析构函数是用来撤销对象。简单的说:一个对象出生的时候,使用构造函数,死掉的时候,使用析构函数。下面

2017-05-30 22:41:01 725

原创 C++类静态数据成员与类静态成员函数

C++类静态数据成员与类静态成员函数当将类的某个数据成员声明为static时,该静态数据成员只能被定义一次,而且要被同类的所有对象共享。各个对象都拥有类中每一个普通数据成员的副本,但静态数据成员只有一个实例存在,与定义了多少类对象无关。静态方法就是与该类相关的,是类的一种行为,而不是与该类的实例对象相关。静态数据成员的用途之一是统计有多少个对象实际存在。静态数据成员不能在类中初始化,实际上类定义只是

2017-05-30 22:18:45 1082

原创 Python 函数中,参数是传值,还是传引用?

Python 函数中,参数是传值,还是传引用?在 C/C++ 中,传值和传引用是函数参数传递的两种方式,在Python中参数是如何传递的?回答这个问题前,不如先来看两段代码。

2017-05-29 10:44:58 562

转载 什么是默认构造函数?

对于C++默认构造函数,我曾经有两点误解:类如果没有定义任何的构造函数,那么编译器(一定会!)将为类定义一个合成的默认构造函数。合成默认构造函数会初始化类中所有的数据成员。第一个误解来自于我学习C++的第一本书 《C++ Primer》,在书中392页:“只有当一个类没有定义构造函数时,编译器才会自动生成一个默认构造函数”。实际上这句话也没有说错,它说明了默认构造函数定义的必要非充分条件,然而

2017-05-29 01:04:40 15744 3

原创 C++标准库类型——迭代器

C++标准库类型——迭代器基础介绍​ 迭代器提供对一个容器中的对象的访问方法,并且定义了容器中对象的范围。​ 迭代器就如同一个指针。事实上,C++的指针也是一种迭代器。但是,迭代器不仅仅是指针,因此你不能认为它们一定具有地址值。例如,一个数组索引,也可以认为是一种迭代器。​ 除了使用下标来访问 vector 对象的元素外,标准库还提供了另一种访问元素的方法:使用迭代(iterator)。

2017-04-30 20:43:56 1484

原创 IO标准库——④内存输入输出

sstream头文件定义了三个类型来支持IO,这些类型可以向string写入数据,从string读取数据,就像string是一个IO流一样。istringstream从string读取数据。ostringstream向string写入数据。stringstream既可以从string读数据,也可以向string写数据。stringstream特有的操作sstream strm; str

2017-04-24 00:55:47 324

原创 IO标准库——③文件输入输出

头文件fstream定义了三个类型来支持文件IO:ifstream从一个给定文件读取数据。ofstream向一个给定文件写入数据。fstream可以读写给定文件。特别是,我们可以用IO操作符来读写文件,可以用getline从一个ifstream读取数据。文件输入输出当我们想要读写一个文件时,我们有两种方法。方式一我们首先定义一个文件流对象,此文件没有与任何文件关联起来,即,空文件流对象。fs

2017-04-24 00:55:07 339

原创 IO标准库——②控制台输入输出

iostream库简介iostream库包含两个基本基础类型istream和ostream,分别表示输入流和输出流。一个流就是一个字符序列,是从IO设备读出或写入IO设备的。istream类型对象和ostream类型对象标准库iostream定义了4个IO对象,分别为:istream类型对象cin: 为了处理输入,我们使用一个名为cin的istream类型对象,这个对象也被称为标准输入。ost

2017-04-24 00:54:40 485

原创 IO标准库——①IO类概述

C++语言不直接处理输入输出,而是通过一族在标准库中的类型来处理IO。这些类型支持从设备读取数据、向设备写入数据的IO操作,设备可以是文件、控制台窗口以及内存。本文首先介绍IO库中常用的基本概念。IO类型间的关系为了支持不同种类的IO处理操作,在istream和ostream的基础上,标准库定义了其他一些IO类型:头文件iostream定义了用于读写流的基本类型。头文件fstream定义了读写命

2017-04-18 10:07:58 616

原创 动态内存分配

动态内存分配函数的原型都在头文件stdlib.h中声明。malloc函数malloc函数执行动态内存分配——malloc函数维护一个可用的内存池,当一个程序另外需要一些内存时,它就调用malloc函数,malloc函数从内存池中提取一块合适的内存,并向该程序返回一个指向这块内存的指针,这块内存此时并没有以任何方式进行初始化。函数原型void *malloc(size_t size);返回类型——vo

2017-04-16 18:54:33 560

原创 再探函数参数

C函数的所有参数均以“传值调用”方式进行传递。这意味着函数将获得参数值的一份拷贝,这样函数可以放心修改这个拷贝值,而不必担心会修改调用程序实际传递给它的参数。作为函数参数的普通数据类型普通数据类型主要包括:整型浮点型

2017-04-16 18:45:31 295

原创 结构

聚合数据类型聚合数据类型能够同时存储超过一个的单独数据。C提供了两种类型的聚合数据类型——数组和结构。数组是相同类型的元素的集合,它的每个元素都是通过下标引用或指针间接访问来选择的。 数组元素可以通过下标来访问,这只是因为数组的元素长度相同。结构也是一些值的集合,这些值称为它的成员。但一个结构的各个成员可能具有不同的类型。 由于结构中各个成员可能具有不同的类型,导致结构的成员可能长度不同,所

2017-04-13 10:36:41 296

原创 数组

数组C语言包含4种基本数据类型:整型浮点型指针聚合类型 数组结构……之前的文章中,我们已经学习了前面三种基本数据类型。今天我们将学习聚合类型中的数组。数组分为两种:一维数组多维数组但是多维数组其实是一维数组的一种扩充,所以我们仅仅学习一维数组。一维数组的声明为了声明一个一维数组,我们需要在数组名后面跟一对方括号[],方括号里面是一个整数,指定数组中的元素的个数。int valu

2017-04-12 08:46:40 386

原创 列表数据类型

列表数据类型“列表”是一个值,它包含多个字构成的序列。“列表值”指的是列表本身,而不是指列表中的值。列表中的值称为表项,表项用逗号隔开。列表用左括号开始,右括号结束,即[]。注意,[]是一个空列表,不包含任何值。列表操作下标取得列表的单个值列表后面方括号内的整数被称为“下标”。下标只能是整数,不能是浮点数。列表中第一个值的下标是0,列表中第二个值的下标为1,以此类推。负数下标虽然下标从0开始先上增长

2017-04-10 21:44:22 6051

原创 再探列表

引用分析下面程序:spam = [0,1,2,3,4,5,6]cheese = spamcheese[1] = 'hello'print(spam)print(cheese)运行结果:[0, 'hello', 2, 3, 4, 5, 6][0, 'hello', 2, 3, 4, 5, 6]为什么修改列表cheese的表项值,也会同时导致列表spam的表项值改变呢?当我们将列表赋值给一个变

2017-04-10 21:41:55 288

原创 函数

函数在Python中,函数包含以下几部分:def关键字函数名由括号()包围着的参数列表,每个参数之间用逗号隔开。在下一行,缩进的代码块(称为函数体)

2017-04-09 11:32:47 262

原创 控制流

布尔值和整型、浮点型、字符型数据类型不同,布尔数据类型只有两个值:True,False。在作为python代码输入时,布尔值True和False不像字符串,两边没有引号,它们总是以大写字母T和F开头,后面的字母小写。比较操作符比较操作符比较两个值,求值为一个布尔值。比较操作符根据给它们提供的值,求值为True或False。

2017-04-08 12:08:13 419

原创 函数

函数定义函数的定义就是函数体的实现。函数体就是一个代码块,它在函数被调用时执行。代码块就是一对花括号,里面包含了一些声明和语句(两者都是可选的)。函数定义的语法如下:类型 函数名(形式参数) 代码块形式参数包括变量名和它们的类型声明。代码块包含了局部变量的声明和函数调用时需要执行的语句。return语句当执行流到达函数定义的末尾是,函数就将返回(return)。

2017-04-06 20:34:32 249

原创 指针

内存和地址计算机的内存由数以亿万的位(bit)组成,每个位可以容纳值0和1。但是,由于一个位能表示的值的范围太有限了,所以单独的位的用处不大!通常将许多位合成一组作为一个单位,这样就可以存储范围较大的值。其中每一个单位称为一个字节(byte),每个字节都包含了存储一个字节所需要的位数。通常,在大部分机器上,每个字节包含8个位,可以存储无符号值0到255,或有符号值-128到127。

2017-04-06 16:24:58 262

原创 python基础

表达式表达式包含“值”和“操作符”,并且总是可以求值为单个值。没有“操作符”的单个“值”也被认为是一个表达式,尽管它的求值结果就是它自己。

2017-04-06 11:21:30 318

原创 操作符

操作符

2017-04-05 16:53:26 417

原创 语句

空语句C最简单的语句就是空语句,它本身只包含一个分号。空语句适用的场合就是语法要求出现一条完整的语句,但并不需要它执行任何任务。表达式语句C并不存在专门的赋值语句、而是统一用“表达式语句”代替。表达式后面添加一个分号,就可以把表达式转变为表达式语句。代码块代码块就是位于一对花括号之内的可选的声明和语句列表。代码块可以用于要求出现语句的地方,它允许我们在语法要求只出现一条语句的地方使用多条语句。

2017-04-04 20:39:23 239

原创 数据

程序是对数据进行操作的。

2017-04-04 14:55:53 257

原创 C语言基本概念

环境显而易见,在学习C语言之前,我们必须知道系统是如何“运行”我们所编写的代码。ANSI C中,存在两种不同的环境。翻译环境 源代码被转换成可执行的机器指令。执行环境 可执行的机器指令在系统中执行。由于执行环境过于复杂,这里只研究翻译环境。如图所示,下图介绍了翻译环境的具体细节(汇编语言等内容被忽略)尽管ANSI C并没有制定文件的取名规则,但大多数环境都存在必须遵守的文件名命名约定。

2017-04-03 16:24:58 363

原创 标准库类型deque

deque是“double-ended queue”的缩写,简称双端队列。如下图所示,我们可以将deque与vector进行比较:与string和vector类似,deque支持快速的随机访问。同时,在deque的中间位置添加或删除元素的代价(可能)很高。但是,在deque的两端添加或删除元素都是很快的。

2017-04-03 14:58:30 1139

原创 标准库类型vector

标准库类型vector表示对象的集合,其中所有对象的类型相同。vector将元素保存在连续的内存空间中。我们可以将标准库vector看做动态的数组,相比于一般的数组——其维度必须提前给定——动态数组vector并没有限制其大小,这表明我们可以自由的先向其中添加元素。学习标准库类型vector之前,我们必须了解函数模板和类模板。

2017-04-02 15:57:12 393

原创 函数模板

函数模板一个函数模板就是一个创建函数的蓝图或者公式。例如,我们希望编写一个函数来比较两个值(值类型可能为int型、double型、string型……),由于值类型繁多,所以我们必须编写多个函数,每个函数比较一种给定类型的值。但是,如果我们使用函数模板,通过函数模板这个蓝图生成针对特定类型的函数版本,那我们的工作量将大大减少。

2017-03-19 21:00:26 207

原创 赋值运算符重载

赋值运算符重载

2017-03-09 20:25:50 442

原创 输入输出运算符重载

输入输出运算符重载

2017-03-09 20:24:32 600

原创 关系运算符重载

运算符重载

2017-03-09 16:30:51 554

原创 运算符重载

运算符重载函数重载保证用户能够定义多个名称相同但是参数列表不同的函数,希望用户能够通过同名的函数完成相同的基本操作。运算符重载允许C++赋予运算符多种含义,而C++允许将运算符重载扩展到用于自定义的类型。例如允许两个类对象相加+。

2017-03-09 15:47:14 271

原创 类对象数组

类对象数组当我们需要创建同一个类的多个对象时.我们可以单独创建一个个对象:Share xiong1 , xiong2 ,xiong3;同时,我们也可以创建一个对象数组:Share mystuff[4];

2017-03-09 14:12:19 1576

原创 this指针

this指针前言到目前为止,每个类成员函数只涉及一个对象,即调用它的对象。但是有时候成员函数可能涉及到两个对象,这种情况下需要使用C++的this指针。

2017-03-09 14:00:18 242

原创 析构函数

析构函数用构造函数创建对象后,程序负责跟踪该对象,直到其过期为止。对象过期时,程序将自动调用一个特殊的成员函数——析构函数来完成清理工作。

2017-03-09 12:48:52 253

原创 构造函数

前言C++的目标之一就是让用户使用类对象就像使用基本内置类型对象一样。

2017-03-09 12:16:25 783

原创

前言数据类型决定了程序中数据和操作的意义。i = i + j;如果i,j是整型int数据,那么这条语句执行普通的加法运算。C++的目标之一是让用户使用自定义数据类型就像使用基本数据类型一样。类类是一种将抽象转换为用于自定义类型的C++工具,它将数据表示和数据操纵方法组合成一个简洁的包。

2017-03-08 22:39:50 235

原创 python简介

解释型语言/编译型语言计算机不能直接理解高级语言,只能直接理解机器语言。只有把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。

2016-12-14 22:36:58 583

空空如也

空空如也

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

TA关注的人

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