13.2. Boost.Array
库 Boost.Array 在 boost/array.hpp
中定义了一个模板类 boost::array
。 通过使用这个类, 你可以创建一个跟 C++ 里传统的数组有着相同属性的容器。 而且, boost::array
还满足了 C++ 中容器的一切需求, 因此, 你可以像操作容器一样方便的操作这个 array。 基本上, 你可以把 boost::array
当成 std::vector
来使用, 只不过 boost::array
是定长的。
- #include <boost/array.hpp>
- #include <iostream>
- #include <string>
- #include <algorithm>
- int main()
- {
- typedef boost::array<std::string, 3> array;
- array a;
- a[0] = "Boris";
- a.at(1) = "Anton";
- *a.rbegin() = "Caesar";
- std::sort(a.begin(), a.end());
- for (array::const_iterator it = a.begin(); it != a.end(); ++it)
- std::cout << *it << std::endl;
- std::cout << a.size() << std::endl;
- std::cout << a.max_size() << std::endl;
- }
就像我们在上面的例子看到的那样, boost::array
简直就是简单的不需要任何多余的解释, 因为所有操作都跟 std::vector
是一样的。
在下面的例子里, 我们会见识到 Boost.Array 的一个特性。
- #include <boost/array.hpp>
- #include <string>
- int main()
- {
- typedef boost::array<std::string, 3> array;
- array a = { "Boris", "Anton", "Caesar" };
- }
一个 boost::array
类型的数组可以使用传统 C++ 数组的初始化方式来初始化。
既然这个容器已经在 TR1 中加入到了 C++ 标准, 它同样可以通过 std::array
来访问到。 他被定义在头文件 array
中, 使用它的前提是你正在使用一个支持 TR1 的 C++ 标准的库。