zoukankan      html  css  js  c++  java
  • 《BOOST程序库完全开发指南》 第07章 容器与数据结构

    <boost/array.hpp>:包装内建数组,为其提供标准STL接口,如begin()、front()等,速度性能上与原始数组相差无几。

    #include <iostream>
    #include <boost/array.hpp>
    #include <boost/typeof/typeof.hpp>
    
    int main()
    {
        boost::array<int,10> arr;   //一个长度为10的int数组,或 boost::array<int,3> arr = {1,2,3}
        arr[0] = 1;
        arr.back() = 2; //给最后一个元素赋值为2
        arr.assign(100); //给数组所有元素赋值为100
        for(BOOST_AUTO(pos,arr.begin()); pos != arr.end(); ++pos)
        {
            std::cout<<*pos<<",";
        }
        int *p = arr.c_array(); //获取原始数组指针
        *(p+5) = 5;
        std::cout<<"\n"<<arr[5]<<std::endl;
        int *p_onlyread = arr.data();   //获取原始数组常量指针
        *(p_onlyread+5) = 3;
        std::sort(arr.begin(),arr.end());
        for(BOOST_AUTO(pos,arr.begin()); pos != arr.end(); ++pos)
        {
            std::cout<<*pos<<",";
        }
        std::cout<<"\narray's size:"<<arr.size()<<std::endl;
    }

    C++98标准为处理二进制数值提供了两个工具:vector<bool> 和 bitset。前者可以动态增长,但不能方便的进行位运算;后者则相反。

    <boost/dynamic_bitset.hpp> 结合了上术两者的优势,它不是严格意义上的“容器”,不提供迭代器支持。

    暂时略过,等需要时和 vector<bool> 和 bitset 放在一起研究。

    散列容器(hash container)通常比二叉树的存储方式可以提供更高的访问效率。SGISTL、STLport 等都实现了各自的散列容器,且取名皆为 hash_set、hash_map,为了避免与现有代码的冲突,这里取名为 unordered_xxx 的形式,同时也表明它是无序的。

    散列集合 unordered_set/unordered_multiset 与 标准关联容器 set/multiset 用法相同,只是内部使用散列表代替了二叉树实现,查找复杂度由对数降为常数。

    散列映射 unordered_map/unordered_multimap 与上相同。

    标准库中提供的 map/multi_map 是单向的映射关系,<boost/bimap.hpp> 提供了双向的映射关系,其接口被特意设计为符合STL规范,以减少学习负担。

  • 相关阅读:
    php过滤表单提交的html等危险代码
    浅析php过滤html字符串,防止SQL注入的方法
    PHP简单判断手机设备的方法
    如何用Math.max.apply()获取数组最大/小值
    Ubuntu14.04升级到Ubuntu16.04
    4、python数据类型之列表(list)
    3、python数据类型之字符串(str)
    centos7网卡名称修改以及配置
    rsync简单总结
    8、kvm虚拟机添加硬盘
  • 原文地址:https://www.cnblogs.com/tianyajuanke/p/2737167.html
Copyright © 2011-2022 走看看