第16章:string类和标准模板库

2018-01-29  本文已影响0人  YBHello

/* 使用结构来记录知识 - 知识体系 */
本章节复习了 string 类,但其重点为标准模板库的介绍。这里将采用:3+2+1 的方式来记录本章节知识点(为什么使用数字:1. 使用数字的方式更直观 2. 重新整理顺序、便于逻辑记忆):

1. 三个简单知识点

2. 两个标准模板库知识

  1. 容器:实现了对应结构体描述的方法的模板类。
  2. 迭代器:实现了 ++、*(解引用)、.begin、.end 等方法的模板类。
  3. 算法:实现了数学算法描述的功能的模板。

3. 一个其他


简单使用范例代码:

/**
 * 16. string 和 标准模板库
 *      1. string
 *      2. 容器 set 的使用
 *      3. 算法 set_union
 *      4. 迭代器 基本循环和 insert_iterator
 */
#include <iostream>
#include <vector>
#include <set>
#include <algorithm>
#include <iterator>

using namespace std;



int main()
{
    cout << "Hello world!" << endl;

    int i = 0;
    string input;

    set<string> mat_friends;
    set<string> pat_friends;
    set<string> all_friends;

    set<string>::iterator p;

    do {
        cout << "input mat's friends name:(# to quit.) : ";
        cin >> input;
        if (input == "#")
        {
            break;
        }
        mat_friends.insert(input);

    } while (1);


    for (p = mat_friends.begin(), i = 0; p != mat_friends.end(); p++, i++)
    {
        cout << i << " : " << *p << endl;
    }

    do {
        cout << "input pat's friend name:(# to quit.) : ";
        cin >> input;
        if (input == "#")
        {
            break;
        }
        pat_friends.insert(input);
    } while (1);


    for (p = pat_friends.begin(), i++; p != pat_friends.end(); p++, i++)
    {
        cout << i << " : " << *p << endl;
    }

    cout << endl << "All friend:" << endl;

    set_union(mat_friends.begin(), mat_friends.end(),
                   pat_friends.begin(), pat_friends.end(),
                   insert_iterator<set<string> >(all_friends, all_friends.begin()));   // 这里是 >(space)>


    for (p = all_friends.begin(), i = 0; p != all_friends.end(); p++, i++)
    {
        cout << i << " : " << *p << endl;
    }

    cout << endl << "Another way to print: " << endl;

    ostream_iterator<string, char> out(cout , "\n");

    set_union(mat_friends.begin(), mat_friends.end(),
              pat_friends.begin(), pat_friends.end(),
              out);


    return 0;
}

我是伍栎,一个用文字记录成长的程序猿。:)

上一篇下一篇

猜你喜欢

热点阅读