• 13.2. Boost.Array

    13.2. Boost.Array

    库 Boost.Array 在 boost/array.hpp 中定义了一个模板类 boost::array 。 通过使用这个类, 你可以创建一个跟 C++ 里传统的数组有着相同属性的容器。 而且, boost::array 还满足了 C++ 中容器的一切需求, 因此, 你可以像操作容器一样方便的操作这个 array。 基本上, 你可以把 boost::array 当成 std::vector 来使用, 只不过 boost::array 是定长的。

    1. #include <boost/array.hpp>
    2. #include <iostream>
    3. #include <string>
    4. #include <algorithm>
    5.  
    6. int main()
    7. {
    8. typedef boost::array<std::string, 3> array;
    9. array a;
    10.  
    11. a[0] = "Boris";
    12. a.at(1) = "Anton";
    13. *a.rbegin() = "Caesar";
    14.  
    15. std::sort(a.begin(), a.end());
    16.  
    17. for (array::const_iterator it = a.begin(); it != a.end(); ++it)
    18. std::cout << *it << std::endl;
    19.  
    20. std::cout << a.size() << std::endl;
    21. std::cout << a.max_size() << std::endl;
    22. }
    • 下载源代码

    就像我们在上面的例子看到的那样, boost::array 简直就是简单的不需要任何多余的解释, 因为所有操作都跟 std::vector 是一样的。

    在下面的例子里, 我们会见识到 Boost.Array 的一个特性。

    1. #include <boost/array.hpp>
    2. #include <string>
    3.  
    4. int main()
    5. {
    6. typedef boost::array<std::string, 3> array;
    7. array a = { "Boris", "Anton", "Caesar" };
    8. }
    • 下载源代码

    一个 boost::array 类型的数组可以使用传统 C++ 数组的初始化方式来初始化。

    既然这个容器已经在 TR1 中加入到了 C++ 标准, 它同样可以通过 std::array 来访问到。 他被定义在头文件 array 中, 使用它的前提是你正在使用一个支持 TR1 的 C++ 标准的库。