02 C++
mcyJacky
later equals never!!!
展开
-
Z01 fstream中ofstream的简单用法
本篇内容简单介绍ofstream(output file stream)的用法,ofstream是从内存到硬盘,本例即将数据写入到文本中。原创 2017-10-28 21:51:28 · 591 阅读 · 0 评论 -
32 moveable元素对于容器速度的影响
本篇主要讲述类元素搬移move的用法,如再我们设计类string时,会有big three的设计:拷贝构造、拷贝赋值和析构函数。本篇是再此基础上,再增加搬移move赋值等操作。原创 2017-12-24 16:48:25 · 414 阅读 · 0 评论 -
31 tuple和type trait用例
1、tupletuple是由代表由任意类型组成的东西,类似pair是由两种元素组成。1)tuple的结构G4.8 解析:a、模板类tuple由泛化和特化版本组成。其中特化版本类的模板参数由Head和多个Tail组成,可以将tuple参数拆分为第一个和后面一组;b、特化版本类继承本身,但模板参数是去掉首元素Head;c、在tuple中的数据是m原创 2017-12-24 16:06:14 · 412 阅读 · 0 评论 -
30 hash function
我们什么时候会用到hash function呢?举个例子来说,当我们使用hashtble的时候,会到的hash function产生hash code。然后根据hash code在bucket篮子中用链表的形式存放数据。而STL中对于通过类型如int,string等有定义默认的hash function(可以参照hashtable篇)...原创 2017-12-20 21:05:11 · 450 阅读 · 0 评论 -
29 x适配器ostream_iterator和istream_iterator
本篇主要介绍另外两个适配器ostream_iterator和istream_iterator,它们的作用是:可以将内容用std::cout中输出,将内容用std::cin输入,但还有其它方式。原创 2017-12-16 16:25:53 · 356 阅读 · 0 评论 -
28 迭代器适配器
本篇主要介绍适配器中的第三种,它属于迭代器的适配器,换句话说就是对迭代器进行改造。下面用两个例子reverse_iterator和inserter进行举例。原创 2017-12-16 15:47:35 · 342 阅读 · 0 评论 -
27 新型适配器bind的使用方法
上一篇已经介绍G2.9中的能进行参数绑定的适配器bind2nd(绑定第二参数),当然也有绑定第一参数(bind1nd)。而在新版的编译器中有一个新型的绑定适配器bind,下面主要用示例进行介绍其用法。原创 2017-12-14 20:44:36 · 378 阅读 · 0 评论 -
26 函数适配器binder2nd
适配器通俗的理解就是某个对象(事物)的转换工具。STL中适配器有三种:容器适配器、函数适配器和迭代器适配器。其中容器适配器在之前篇章已经介绍,如容器stack和queue,它们就是对容器deque的一个适配。本篇主要介绍函数适配器,并用G2.9中的bind2dn来举例说明。原创 2017-12-14 20:10:49 · 701 阅读 · 0 评论 -
01 C++中complex.h头文件的写法
本系列内容主要是介绍C++的学习笔记。第一部分01介绍不包含指针的头文件complex.h的写法以及使用,即用C++编写一个数学中复数的头文件,运用类构造、函数构造、运算符重载等实现在对复数的数学计算。原创 2017-10-15 09:54:31 · 5218 阅读 · 1 评论 -
25 仿函数与函数对象
在C++的STL结构中,仿函数是为了算法服务的。也就是说设计某个算法时,如sort()。会使用相关的仿函数在实现排序,而且仿函数有特定的继承结构。原创 2017-12-13 21:06:34 · 412 阅读 · 0 评论 -
24 迭代器分类对算法的影响
STL中的算法是独立于容器的,但是它可以通过迭代器iterators对容器进行操作,当容器的迭代器能回答算法的提问时,该容器才能搭配算法的所有操作。而从语言层面上说,算法Algorithm,是一个函数模板function template。原创 2017-12-11 22:20:22 · 410 阅读 · 0 评论 -
23 hashtable&unordered_set&unordered_map深度探索
STL中的另一种关联式容器unordered_set/multiset,unordered_map/multimap是以hashtable(散列表)为底层结构的。下面对hashtable的数据结构做一个详细的介绍。原创 2017-12-09 21:26:11 · 587 阅读 · 0 评论 -
22 rb_tree&set&map深度探索
STL容器set\multiset、map和multimap是属于关联类型(associated type)。其底层结构是红黑树rb_tree。本篇先介绍红黑树的结构和使用规则,然后以set和map的特性讲述如何使用rb_tree作为底层结构。原创 2017-12-07 19:56:01 · 457 阅读 · 0 评论 -
21 容器deque&queue&stack深度探索
本篇主要介绍STL容器deque的数据结构,deque是属于序列化结构(sequence),可以向容器两端增加或删除数据。deque容器可以当做线性结构使用,而实际上deque的设计是分段连续的,并不是像array或vector一样是连续的,详细介绍如下。而queue堆和stack栈的设计,是复合了容器deque,然后关闭deque的部分功能来实现。原创 2017-12-05 20:30:05 · 323 阅读 · 0 评论 -
20 容器vector的深度探索
这篇主要介绍G2.9中STL容器vector的设计结构。vector是连续的空间结构,并可以向容器尾部增加元素。原创 2017-12-03 23:04:07 · 631 阅读 · 0 评论 -
19 迭代器iterator的设计原则
我们知道STL中迭代器的功能是实现算法对容器的操作,换种方式说就是实现算法的操作需要容器的什么数据,都是通过迭代器来实现的(迭代器有能力回答算法的提问)。而通过对标准库查看,首先要知道每个容器的迭代器需要实现5种规定的关联类型。原创 2017-12-03 22:22:09 · 394 阅读 · 0 评论 -
18 容器之list探索
本篇主要在之前的基础上,更加深入的介绍STL中的双向链表容器List,包括List类模板、迭代器iterator等。原创 2017-11-30 23:39:17 · 259 阅读 · 0 评论 -
02 C++中string.h头文件的写法
本篇内容主要构造一个string.h的头文件(用于构造一个字符串类String),与01篇内容不同的是该头文件中包含指针数据。因此类的构造中涉及(three big)即拷贝构造copy ctor、拷贝复制copy op、析构函数的用法。原创 2017-10-28 10:35:31 · 1459 阅读 · 0 评论 -
03 C++中复合、委托和继承的基本用法
本篇内容主要是介绍C++中类与类之间Composition(复合)、Delegation(委托)和Inheritance(继承)的基本设计模式,如Adapter、pimpl、Template Method、Observe等。原创 2017-11-05 23:11:09 · 1401 阅读 · 0 评论 -
Z02 fstream中ifstream的简单用法
本篇将介绍fstream中ifstream(input file stream)的用法,ifstream是从硬盘到内存,本例读取文本数据至控制台显示。原创 2017-10-28 22:22:51 · 402 阅读 · 0 评论 -
H01 C++面向对象高级编程下作业解析
1、题目如下2、解析1)编制头文件如下#ifndef FRUITW4_H_#define FRUITW4_H_class Fruit{public: Fruit(int n, double w, char c) :no(n), weight(w), key(c){ } void print() { } virtual void process() { }p原创 2017-11-12 21:14:34 · 464 阅读 · 0 评论 -
Z03 C++中const的通常用法
1、指针与const可以用两种不同的方式将const关键字用于指针。第一种方法是让指针指向一个常量对象,这样可以防止使用该指针来修改所指向的值。第二种方法是将指针本身声明为常量,这样可以防止改变指针指向的位置。1)指针指向一个常量对象#include using namespace std;int main(void){ int age = 29; const int原创 2017-10-30 21:48:39 · 278 阅读 · 0 评论 -
16 STL集合和映射容器set/multiset_map/multimap
与序列容器sequence container不同,set/multiset,map/multimap是关联容器associate container。其中set与multiset、map与multimap的区别是前者是不能有重复元素,后者可以存放重复元素,本篇只介绍可以存放重复元素的multiset和multimap容器。原创 2017-11-21 22:48:05 · 347 阅读 · 0 评论 -
15 STL中容器双向链表list和单向链表forward_list
本篇及以下讲述STL容器不再具体详细示例,而是把该容器的特有性质用一段代码示例表示。容器list和forward_list也是属于sequence containers,其中list为双向链表,forword_list为单向链表。原创 2017-11-20 23:19:40 · 1202 阅读 · 1 评论 -
14 STL中容器vector
1、概述vector容器是容器类和算法系统的一部分,支持面向容器的操作,如排序,插入,重新排序,搜索,数据转移等。2、容器vector的结构注意点:vector容器是线性结构,容器的大小不是固定的,可向容器的一端扩展数据。3、测试代码头文件#include #include #include //abort()#include //_snprintf()#inc原创 2017-11-18 21:27:38 · 273 阅读 · 0 评论 -
13 STL中数组容器array
array数组容器是为了替代内置数组而设计的,表示长度固定的数组,提供了多个STL方法,但是不支持push_back()和insert(),是属于序列容器sequence containers。原创 2017-11-18 20:34:01 · 489 阅读 · 0 评论 -
12 C++标准库中STL体系结构
1、概述通常所说的C++的STL是指标准模板库,只要安装了C++的编译器就会存在。其范围比C++标准库要小,主要包括六大部件:容器Containers、分配器Allocators、算法Algorithms、迭代器Iterators、适配器Adapter以及仿函数Functors,下面对着6大部件。做一个简单的解释。2、容器Containers容器是用来存储数据的,数据可以试用户自定义的原创 2017-11-18 20:05:58 · 460 阅读 · 0 评论 -
11 关于C++中的new和delete
本篇介绍new和delete的内存管理以及operator new/new[]和operator delete/delete[]的重载方法。原创 2017-11-14 21:31:54 · 606 阅读 · 0 评论 -
10 C++中的对象模型object model
本篇介绍C++中的对象模型中虚指针vptr,虚表vtbl,动态绑定Dynamic Binding的相关知识点。原创 2017-11-13 21:33:01 · 382 阅读 · 0 评论 -
09 C++Reference引用的用法
在C++使用中,经常会用到引用reference和指针point。下面将用示例说明,引用和指针的区别。原创 2017-11-12 11:31:46 · 386 阅读 · 0 评论 -
08 C++11中的variadic template、auto和for基本用法
C++11中增加了不少新的特性,本篇主要介绍variadic templates(数量不定的模板参数)、auto和ranged-base for的用法。原创 2017-11-12 11:13:32 · 596 阅读 · 0 评论 -
07 C++模板特化、模板偏特化和模板模板参数基本用法
C++中对类模板、函数模板、成员模板除了通用的方法外,还有模板特化和偏特化的用法,具体用如下示例解释。原创 2017-11-11 22:43:46 · 573 阅读 · 0 评论 -
06 C++中类、函数、成员模板基本用法
需要多个对不同类型使用同一种算法的类、函数和成员时,可使用模板(也就是说用泛型来定义)。本篇主要介绍C++中类模板、函数模板、成员模板的声明和使用方法。原创 2017-11-11 22:14:42 · 335 阅读 · 0 评论 -
05 C++中智能指针point-like class和仿函数function-like的基本用法
本篇介绍智能指针smart point和仿函数factors的用法。该程序是部分模板库的代码解析。原创 2017-11-11 21:28:55 · 659 阅读 · 0 评论 -
04 C++中转换函数(Conversion Function)的用法
本篇通过分数类Fraction的设计介绍C++类设计中,转换函数和non-explict-one-argument ctor的用法。原创 2017-11-06 22:52:40 · 1742 阅读 · 0 评论 -
17 分配器Allocator和容器间的关系
STL中的分配器是用于给容器Containers分配内容和释放内存的,即进行容器的内存管理,通常我们使用容器的时候都是使用默认的分配器,当然你也可以自己去定制一个分配器。原创 2017-11-29 23:38:30 · 318 阅读 · 0 评论