您的位置:首页 > 编程语言 > C语言/C++

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

2012-06-29 11:23 281 查看
 

第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 概念

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: