- 博客(76)
- 收藏
- 关注
原创 【C++ Primer】【学习笔记】【第九章】顺序容器之:vector容器的自增长
【题外话】容器的类别汇总 - 容器 - 顺序容器 - vector(向量容器) - list(链表容器) - deque(双端队列容器) - 关联容器 - pair(键值对)
2015-03-19 12:00:18 521
原创 【APUE】源码下载及编译
下载地址:http://www.apuebook.com/,下载的压缩文件名称:src.2e.tar.gz 编译步骤: STEP1:解压压缩文件,生成目录apue.2e [apue]$ tar xvzf src.2e.tar.gz [apue]$ ls apue.2e src.2e.tar.gz STEP2:修改文件 文件名称
2015-03-18 00:15:19 587
原创 【C++ Primer】【学习笔记】【第九章】顺序容器之:顺序容器的操作
一、容器定义的类型别名 容器定义的类型别名 说明 size_type 无符号整数 iterator 容器类型的迭代器类型 const_iterator 元素的只读迭代器类型 reverse_iterator 按逆序寻址元素的迭代器 c
2015-03-08 10:06:12 644
原创 【Shell】函数应用简单示例
功能:启动和停止服务框架 [shell]$ cat function.sh #!/bin/sh start() { echo "start" } stop() { echo "stop" } case C"$1" in Cstart) start echo "Done!" ;; Cstop)
2015-03-07 00:09:09 394
原创 【C++ Primer】【学习笔记】【第九章】顺序容器之:迭代器和迭代器范围
一、所有标准库容器都可以使用的迭代器运算 所有标准库容器都支持的迭代器运算 说明 *iter 返回迭代器iter所指向的元素的引用 iter->mem 获取指定元素中名为mem的成员,等效于(*iter).mem ++iter iter++ 使iter指向容器里的下一个元素
2015-03-06 23:42:19 417
原创 【C++ Primer】【学习笔记】【第九章】顺序容器之:顺序容器的定义
一、顺序容器类型 顺序容器 头文件 vector 支持快速随机访问 #include list 支持快速插入/删除 #include deque 双端队列 #include 顺序容器适配器
2015-02-28 14:54:20 429
原创 【C++ Primer】【学习笔记】【第十章】关联容器之:文本查询程序
textquery.h: #include #include #include #include class TextQuery { public: typedef std::vector::size_type line_no; void read_file(std::ifstream &is) { store_file(is);
2015-02-15 18:00:11 438
原创 【C++ Primer】【学习笔记】【第十章】关联容器之:multimap和multiset类型
一、基本概念 map和set容器,一个键只能对应一个实例;而multimap和multiset容器则允许一个键对应多个实例。 multimap类型使用的头文件与map类型一样,均为map;同样地,multiset类型使用的头文件与set类型一样,均为set。 二、在multimap和multiset容器中添加和删除元素 添加元素:与map和set的insert操作相同,唯一区别是可
2015-02-10 15:09:35 433
原创 【C++ Primer】【学习笔记】【第十章】关联容器之:set类型
一、set容器定义 set容器支持大部分的map操作,但如下两种操作除外: 1、set不支持下标操作; 2、set没有定义mapped_type类型。 注:set存储的元素仅仅是键,而不存储所关联的值。与map一样,set容器存储的键也必须唯一,而且不能修改。 二、set对象插入元素 插入方法 说明 set set1; se
2015-02-06 16:53:35 672
原创 【C++ Primer】【学习笔记】【第八章】标准IO库之:字符串流
一、stringstream对象的使用 1、sstream头文件定义了三种类型的字符串流: 类型 说明 istringstream 从istream派生而来,提供读string的功能; ostringstream 从ostream派生而来,提供写string的功能; stringstream
2015-02-03 11:43:49 479
原创 【C++ Primer】【学习笔记】【第八章】标准IO库之:文件的输入和输出
一、文件流对象的使用 1、fstream头文件定义了三种文件IO的类型: 类型 说明 ifstream 从istream派生而来,提供读文件的功能; ofstream 从ostream派生而来,提供写文件的功能; fstream 从iostream派生而来,提供读写同一个文件的功能
2015-01-19 23:51:49 486
原创 【C++ Primer】【学习笔记】【第八章】标准IO库之:输出缓冲区的管理
输出缓冲区内容刷新的意思是:输出缓冲区的内容写入到真实的输出设备或者文件。 一、如下几种情况会导致输出缓冲区内容被刷新: 1、程序正常结束; 2、缓冲区满(包含正常情况和异常情况); 3、使用操纵符显式地刷新输出缓冲区,如:endl、ends、flush; 4、使用unitbuf操纵符设置流的内部状态; 5、输出流与输入流相关联,此时在读输入流时将刷
2015-01-15 18:32:32 632
原创 【C++ Primer】【学习笔记】【第八章】标准IO库之:条件状态
一、IO标准库的条件状态 操作 含义 stream::iostate 条件状态对应的类型名称。 stream::badbit stream::iostate类型的值,用于指出被破坏的流。 stream::failbit stream::iostate类型的值,用于指出失败的IO操作。
2015-01-14 01:12:08 554
原创 【C++ Primer】【学习笔记】【第八章】标准IO库之:面向对象的标准库
一、IO标准库类型和头文件:(字符类型:char) 头文件 类型 iostream istream从流中读取 ostream向流中写入 iostream对流进行读写;从istream和ostream派生而来。 fstream ifstream从文件中读取;从istream派生而来; ofstream向文件
2015-01-14 00:05:03 450
原创 【C++ Primer】【学习笔记】【第十章】关联容器之:map类型
使用map对象,则需要包含map头文件。在定义map对象时,必须分别指明键和值的类型。 一、map对象的定义 map的构造函数如下: 构造函数 说明 map m; 创建一个名为m的空map对象,其键和值的类型分别为k和v。 map m(m2); 创建m2的副本m,m与m2必须有相同的键类
2015-01-13 00:25:44 690
原创 【C++ Primer】【学习笔记】【第十章】关联容器之:pair类型
pair类型和容器一样,也是一种模板类型。 一、pair类型对象的创建和初始化 创建pair对象时,必须提供两个类型名。如下: pair anon; // 调用默认构造函数对其成员采用值初始化 pair word_count; // 调用默认构造函数对其成员采用值初始化 pair > line; // 调用默认构造函数对其成员采用值初始化 p
2015-01-09 15:14:49 513
原创 【C++ Primer】【学习笔记】【第十六章】模板与泛型编程之一:模板定义
一、函数模板 格式: template int compare(const T &v1, const T &v2) { ........ } 注1:模板形参表不能为空。 注2:typename也可以写成class,含义相同。 二、内联函数模板 格式: template inline int compare(const T &v1, const
2015-01-06 20:44:38 409
原创 【C++ Primer】【学习笔记】【第三章】标准库类型之:bitset类型
标准库bitset类型 使用bitset需要包含的头文件和对应的声明: #include using std::bitset bitset和vector类似,其不是一种数据类型,而是一个类模板。而与vector不一样的是,bitset类型对象的区别仅在其长度而不在其类型。 1、几种初始化bitset对象的方式如下: 方式
2014-12-23 00:34:01 478
原创 【C++ Primer】【练习题】【3.14】将vector<string>对象各元素中的小写字母转换成大写字母
要求:读一组单词到vector对象,将对象各元素中的小写字母转换成大写字母并输出。 #include #include #include #include using namespace std; int main() { vector svec; string str; cout << "Please input text(EOF to
2014-12-19 02:47:38 646
原创 【C++ Primer】【练习题】【3.13】【3.17】求vector<int>相邻元素的和
要求:读一组整数到vector对象,求相邻两两元素的和并输出。 #include #include using namespace std; int main() { vector ivec; int ival; cout << "Please input numbers(EOF to end): "; while (cin >> ival)
2014-12-19 02:11:18 661 1
原创 【C++ Primer】【学习笔记】【第三章】标准库类型之:vector类型
标准库vector类型 vector称为容器,因为它可以包含其他对象,一个容器中的所有对象都必须是同一种类型的。 vector不是一种数据类型,而是一个类模板,可用来定义任意多种数据类型。如:vector、vector都是数据类型。 对于size_type类型,写法vector::size_type是错误的,必须写成vector::size_type。 1、几种初始化v
2014-12-19 02:10:09 439
原创 【C++ Primer】【练习题】【3.10】去除string中的标点符号
要求:输入一个字符串,将其中的标点符号去除后输出。 #include #include #include using namespace std; int main() { string input; string output; // Read a string from cin cout << "Input
2014-12-18 10:21:33 5193
原创 【C++ Primer】【学习笔记】【第三章】标准库类型之:string类型
本章讲解如下三种标准库类型:string、vector、bitset。其中,string定义了大小可变的字符串;vector用于保存一组指定类型的对象;bitset提供了一种抽象方法来操作位的集合。 命名空间的using声明 注:为避免名字冲突,要避免使用using指示,而应当使用using声明。两者表示如下: 方式 示例 using指示:
2014-12-18 00:40:51 349
原创 【Linux】【Vim】使用说明(使用命令vimtutor查看)
=============================================================================== = W e l c o m e t o t h e V I M T u t o r - Version 1.7 = ======================================
2014-12-15 22:50:43 2521
原创 【C++】【学习笔记】【030-031】错误处理和调试
climits中定义了各类型的最大值和最小值: C语言对应文件路径: /usr/include/limits.h CPP语言对应文件路径: /usr/include/c++/3.4.3/climts 头文件定义的符号常量 CHAR_MIN char的最小值 SCH
2014-12-15 10:53:35 455
原创 【C++】【学习笔记】【029】虚继承
引入原因:在多继承的时候,会出现基类的多重拷贝。如上一节的示例中,Teacher类和Student类都继承自Person类,那么在TeachingStudent类进行多继承的时候,会有两份Person类的成员name。为解决该问题,则引入了虚继承的概念。 基本语法: class Teacher : virtual public Person { … } 样例(非虚继
2014-12-10 17:44:05 466
原创 【C++】【学习笔记】【028】多继承
概念:多继承是指一个类从多个类同时进行继承。 基本语法: class TeachingStudent : public Sutdent, public Teacher { ... } 举例: #include #include class Person { public: Person(std::string theName); void introdu
2014-12-10 15:22:49 331
原创 【C++】【学习笔记】【025-027】运算符重载
重载 1、重载就是重新赋予新的含义,函数从在是对一个已有的函数赋予新的含义,使之实现新功能; 2、运算符也可以重载,运算符重载的方法是定义一个重载运算符的函数,在需要执行被重载的运算符时,系统就自动调用该函数,以实现相应的运算; 3、运算符重载时通过定义函数实现的,运算符重载实质上是函数的重载; 重载运算符的函数格式如下: 函数类型 operator 运算符名称(形参列表) {
2014-11-19 09:37:52 404
原创 【C++】【学习笔记】【024】抽象方法
抽象方法: 1、抽象方法(abstract method)也可以称为纯虚函数,是面向对象编程技术的一个核心概念,在设计一个多层次的类继承关系时常会用到; 2、把某个方法声明为一个抽象方法等于告诉编译器这个方法必不可少,但我现在(在这个基类里)还不能为它提供一个实现; 3、抽象方法的语法很简单:在声明一个虚方法的基础上,在原型的末尾加上“=0”,告诉编译器不用浪费时间在这个类里寻找这个方法的实
2014-11-17 15:17:41 535
原创 【C++】【学习笔记】【023】虚方法
虚方法: 1、声明虚方法的语法非常简单,只要在其原型前边加上virtual保留字即可; virtual void play(); 2、普通函数是静态绑定,在编译的时候就确定了要调用基类的函数;虚函数是动态绑定,在运行的时候才确定是调用基类的函数还是子类的函数; 3、另外,虚方法是继承的,一旦在基类里把某个方法声明为虚方法,在子类里就不可能再把它声明为一个非虚方法了;
2014-11-14 13:28:05 557
原创 【C++】【学习笔记】【021-022】静态属性和静态方法
静态属性和静态方法: 1、C++允许我们把一个或多个成员声明为属于某个类,而不是仅仅属于该类的对象;这么做的好处是程序员可以在没有创建任何对象的情况下调用有关的方法;另外一个好处是能够让有关的数据在该类的所有对象间共享; 2、创建一个静态属性和静态方法,只需要在它的声明前加上static保留字即可; 3、对于静态属性,在类中声明的同时,需要同时在类的外面额外定义并初始化该属性对应的内存;
2014-11-12 22:24:38 647
原创 【C++】【学习笔记】【020】友元
1、有些时候,一个完全无关的类由于某些特殊的原因需要访问某个protected成员,甚至某个private成员,这就引入了友元的概念; 2、友元关系是类之间的一种特殊关系,这种关系不仅允许友元类访问对方的public方法和属性,还允许友元访问对方的protected和private方法和属性; 3、声明一个友元关系的语法很简单,只要在类声明里的某个地方加上friend class **就行了,
2014-11-12 12:46:02 359
原创 【C++】【学习笔记】【019】覆盖方法和重载方法
覆盖方法: 1、当我们需要在基类里提供一个通用的函数,但在它的某个子类里需要修改这个方法的实现,在C++里,覆盖(overriding)就可以做到。简言之,覆盖方法就是共性里面寻找特性; 2、覆盖的实现:在子类里重新声明这个方法,然后再改写一下它的实现代码就行了,就像是一个新增加的方法一样; 3、子类里的方法,如果和基类里的方法名字一样、参数不一样,也是会把基类里的方法进行覆盖的;
2014-11-11 21:11:23 446
原创 【C++】【学习笔记】【018】访问控制
1、构造器的设计要越简明越好,我们应该只用它来初始化各种有关的属性; 2、作为一个基本原则,在设计、定义和使用一个类的时候,应该让它的每个组成部分简单到不能再简单; 3、访问控制:就是C++提供了一种用来保护类里的方法和属性的手段; 4、保护的意思是对谁可以调用某个方法和访问某个属性加上一个限制。如果某个对象试图调用一个它无权访问的函数,编译器将报错。 5、C++的访问级别如下:
2014-11-11 17:09:49 410
原创 【C++】【学习笔记】【017】继承机制中的构造器和析构器
1、基类必须在子类之前初始化。如:对于基类Animal和子类Pig,如果基类有个构造器Animal(),它将在创造Pig类型的对象时最先被调用,如果Pig类也有一个构造器Pig(),它将在第二个被调用。 2、如果构造器带着输入参数,情况就比较复杂了;如下所示: // 动物基类 class Animal { public: std::string name; Anima
2014-11-10 17:47:03 534 1
原创 【C++】【学习笔记】【016】this指针和类的继承
1、在对象的世界里,有一个特殊的指针叫做this,该指针指向对象本身; 2、使用this指针的基本原则是:如果代码不存在二义性,就不必使用this指针;当然,在后续一些高级方法中也会使用this指针;
2014-11-10 16:21:55 919
原创 【C++】【学习笔记】【015】构造和析构
在创建对象时,系统都会自动调用一个特殊的方法,即构造器。 构造器和通常方法的主要区别: 1、构造器的名字必须和它所在的类的名字一样; 2、系统在创建某个类的实例时会第一时间自动调用这个类的构造器; 3、构造器永远付汇返回任何值。 4、创建构造器,需要先把它的声明添加到类里。如下: class Car { Car(void); };
2014-11-10 13:54:59 365
原创 【C++】【学习笔记】【014】对象
1、使用对象进行编程是C++的核心,也是我们常说的C++比C“高级”的重要根据之一。 2、类(Class)就像是一幅蓝图,它决定一个对象将是什么样的(具备什么样的属性和功能)。 3、OOP过程的第一步是创建一个类,而每个类跟变量一样都有一个名字。 class MyFirstClass { }; 4、类名的第一个字符采用大写是一种习惯上的标准,但不是硬性规定。在类声明末尾,必须有一个分号
2014-11-10 12:42:44 450
原创 【C++】【学习笔记】【007-013】复杂的数据类型
数组: 编程题:10个元素的整型数组,各元素求和以及平均值。 编程题:将用户输入的字符串打印出来。 #include int main() { std::string str; std::cout //std::cin >> str; std::getline(std::cin, str); std::
2014-11-09 20:55:05 486
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人