zoukankan      html  css  js  c++  java
  • 侯捷STL学习(九)--关联式容器(Rb_tree,set,map)


    layout: post
    title: 侯捷STL学习(九)
    date: 2017-07-21
    tag: 侯捷STL

    第十九节 容器rb_tree

    • Red-Black tree是自平衡二叉搜索树。

    • rb_tree的封装

    • 清楚传入模板的参数列表;然后构建了一个虚空结点header

    • KeyOfValue表示怎么从value中取出key

    • identity函数(Gnu C独有)就是表示同一个数的意思

    • handle-body,采用OOP的思想,构建G4.9

    • 一个红黑树的大小为4个字节

    • test Rb_tree

    #include <set>
    #include <functional>
    #include <iostream>
    namespace jj31
    {
    void test_Rb_tree()
    {
    	//G2.9 vs. G2.9 : 
    	  //rb_tree => _Rb_tree, 
    	  //identity<> => _Identity<>
    	  //insert_unique() => _M_insert_unique()
    	  //insert_equal() => _M_insert_equal()
    		 
    	cout << "
    test_Rb_tree().......... 
    ";
         
    	_Rb_tree<int, int, _Identity<int>, less<int>> itree;
    	cout << itree.empty() << endl;  //1
    	cout << itree.size() << endl;   //0
    
    	itree._M_insert_unique(3);
    	itree._M_insert_unique(8);
    	itree._M_insert_unique(5);
    	itree._M_insert_unique(9);
    	itree._M_insert_unique(13);
    	itree._M_insert_unique(5);  //no effect, since using insert_unique().
    	cout << itree.empty() << endl;  //0
    	cout << itree.size() << endl;   //5
    	cout << itree.count(5) << endl; //1
    
    	itree._M_insert_equal(5);
    	itree._M_insert_equal(5);
    	cout << itree.size() << endl;   //7, since using insert_equal().
    	cout << itree.count(5) << endl; //3       
    }															 
    }
    

    容器set,multiset

    • set、multiset元素的value和key合一,value就是key.
    • 容器set实现
    • const_iterator实现set不能改变容器元素的值
    • 使用identity表示set已经知道key和value是相同的

    容器map,multimap

    • map/multimap的iterator不能改变key,可以改变value
    • map的结构
    • pair将key和data合成value;将key设置为const,这样通过迭代器就不会改变key的值。
    • select1st实现
    • map容器独特的operator[]操作,可以进行插入操作
    • 直接调用insert快一些
  • 相关阅读:
    iOS 3DES加密
    AFNetworking实现程序重新启动时的断点续传
    iPhone缓存网络数据
    SDWebImage使用——一个可管理远程图片加载的类库
    IOS中UITableView异步加载图片的实现
    使用UIImageView展现来自网络的图片
    obj-c学习笔记
    IOS开发-发送邮件(E-mail)方法整理合集(共3种)
    设置tableView背景颜色
    Spring整合JMS(三)——MessageConverter介绍
  • 原文地址:https://www.cnblogs.com/ranjiewen/p/7220140.html
Copyright © 2011-2022 走看看