zoukankan      html  css  js  c++  java
  • 读书笔记之: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 概念

  • 相关阅读:
    poj3273Monthly Expense
    poj2516Minimum Cost
    poj1201Intervals(差分约束)
    poj3122Pie
    poj3258River Hopscotch
    hdu3308LCIS(线段树区间合并)
    CF1178F2 Long Colorful Strip
    CF906C Party
    [NOI2002]贪吃的九头龙
    CF1178F1 Short Colorful Strip
  • 原文地址:https://www.cnblogs.com/xkfz007/p/2569623.html
Copyright © 2011-2022 走看看