![]() |
Home | Libraries | People | FAQ | More |
Copyright 2001-2004 Nicolai M. Josuttis
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
Table of Contents
作為 C++ 標準庫的一部分,C++ 標準模板庫(Standard Template Library STL)提供了一個用於各種不同容器的處理算法的框架。然而,普通數組不提供 STL 容器的接口(儘管它們提供了 STL 容器的迭代器接口)。
為了代替普通數組,STL 提供了 std::vector。但是,std::vector<> 提供動態數組的語義。因此,它管理元素數量會發生變化的數據。這導致的負擔超出僅有靜態大小的數組的需要。
Matthew H. Austern 在他的著作 Generic Programming and the STL 中,提出了一個用於靜態大小的普通數組的有用的包裝類,名叫 block。它更加安全,而且性能也不輸於普通數組。在 The C++ Programming Language 第三版中,Bjarne Stroustrup 提出了一個類似的類,名叫 c_array,我 (Nicolai Josuttis) 對它稍加改變,放到了我的書 The C++ Standard Library - A Tutorial and Reference 中,名叫 carray。這些方法中的一些基本的東西都在 boost 中得到了反應。
考慮了各種不同的名字後,我決定給這個類一個簡單的名字,array。
注意,這個類已經被建議為下一版擴展 C++ 標準的技術報告的一部分(參見 http://std.dkuug.dk/jtc1/sc22/wg21/docs/papers/2003/n1548.htm)。
類 array 實現了大部分但不是全部的「可逆容器」的需求(參見 C++ 標準的 23.1, [lib.container.requirements])。array 不是一個 STL 可逆容器的原因在於:
它沒有實現「序列」的需求(參見 C++ 標準的 23.1.1, [lib. sequence.reqmts]),但以下這些除外:
front() 和 back()。operator[] 和 at()。
Last revised: December 01, 2006 at 06:34:43 -0500 |