读书笔记之:C++ STL 开发技术导引-1

 

第1章 C++编程技术

1.6 显示类型转换

4种显示类型转换的原型

reinterpret_cast转换:

const_cast转换:

static_cast转换:

dynamic_cast转换:

 

1.7 C++中的异常处理

多个try块与catch块的对应

捕捉任意类型的异常

异常类型列表,声明不抛出异常的情况

违反异常类型列表抛出异常

另一种常用异常处理方法:继续抛出异常,让调用者处理异常

1.9 友元函数声明可以放在类的任何地方

第2章 C++模板技术

C++中的模板技术是STL中算法和容器得以实现的基础。模板的引入是将C中的预处理宏推广到C++中而来的。

typename可以来指示某个标志是一个类型

类模板的定义

2.3 模板特化技术

该技术完善了模板对于函数或类的定制功能。

函数模板完全特化,类模板完全特化的方式

 

全特化就是全部特化,即针对所有的模板参数进行特化。偏特化就是部分特化,即针对部分模板参数进行特化。

全特化和偏特化的定义不是很严格,所以有的时候不容易让人理解。

举例如下:

template<class U,class T>

class C{};

全特化:

template<>

class C<int,char>{};

偏特化:

template<class U>

class C<U,int>{};

 

再看下面的一个例子:

template<class T,class U>

class C<T*,U*>{};

这个也属于模板特化

 

2.4 函数模板重载

2.5 类模板继承

第3章 C++中的I/O流技术

在C++的标准模板库中,提供了一组模板类和相应的实现类,来支持面向对象的数据输入和输出功能。

C++流类可以实现对象的I/O操作,这是C++所兼容的C标准库I/O函数所不具备的。

I/O流类的模板类的派生关系

C++中的I/O流类的最底层是模板类basic_streambuf

可以看到经常使用的istream,ostream,iostream,ifstream,ofstream和fstreamd都是利用typedef重新定义的类型

STL中的流类的实现:http://www.cplusplus.com/reference/iostream/

3.3 文件输入输出

文件流类都使用open函数来打开文件。

文件流的读写

#include <fstream>

#include <iostream>

using namespace std;

 

int main(void){

    fstream rwFileStream;

    rwFileStream.open("d:\\digit.txt", ios::in|ios::out|ios::binary|ios::trunc);

    if(!rwFileStream){

        cout << "打开文件失败" << endl;

        return 1;

    }

    for(char i=0; i<26; i++)

        rwFileStream << char('a'+i); //写入26个字母

    //

    rwFileStream.seekg(3, ios::beg); //定位到第3个字母处(从0索引)

    char c;

    rwFileStream.get(c);

    cout << c << endl; //打印出字符d

    rwFileStream.close();

    return 0;

}

3.4 C++中流格式控制

(1)用函数设置或复位格式

setf函数的格式

其他设置函数:

width, precision和fill

 

(2)用输入输出操作符设置流格式

第2篇 C++STL泛化技术基础

第4章 C++STL泛型库概述

STL提出的过程,如何加入到标准中

STL的各种实现版本

STL程序的编译出现问题时,编译器提供的调试信息一般都晦涩难懂,可抓住一些关键信息进行分析。

4.4 C++ STL体系结构

STL中的容器

STL中的迭代器

STL中的算法实现

STL中的函数对象

STL中的适配器

STL中的内存分配器

STL中的概念(Concept)和模型(Model)

C++ STL中存在的一些问题

本章总结:

第5章 C++ STL泛化技术分析

基于算法的泛化实现,引出了迭代器、函数对象和适配器等相关的泛化技术。

充当标签作用的input_iterator_tag

5.1.4 适配器

迭代器适配器

函数对象适配器

5.2 内存适配器和容器

STL中的内存适配器

使用vector说明一般容器泛化技术

vector的基类:vector_base类

vector类

vector中push_back函数的实现

vector在添加一个元素的实现时使用了place new技术:

5.3 概念

posted @ 2012-06-29 11:23  Mr.Rico  阅读(...)  评论(...编辑  收藏