Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Chapter 5. Boost.Array

Boost , The Boost C++ Libraries BoostBook Documentation Subset , Part I. The Boost C++ Libraries (BoostBook Subset)

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Chapter 5. Boost.Array

Nicolai Josuttis

Distributed under the Boost Software License, Version 1.0. (См. сопроводительный файл LICENSE_1_0.txt или копия на http://www.boost.org/LICENSE_1_0.txt)

Introduction

C++ Standard Template Library STL как часть C++ Стандартная библиотека обеспечивает основу для обработки алгоритмов на различных типах контейнеров. Однако обычные массивы не обеспечивают интерфейс STL контейнеров (хотя они обеспечивают итераторный интерфейс STL контейнеров).

В качестве замены для обычных массивов STL предоставляет класс std::vector. Однако std::vector<> предоставляет семантику динамических массивов. Таким образом, он управляет данными, чтобы иметь возможность изменить количество элементов. Это приводит к тому, что некоторые накладные расходы в том случае, если необходимы только массивы со статическим размером.

В своей книге Generic Programming и STL Мэтью Х. Austern вводит полезный класс обертывания для обычных массивов со статическим размером, называемый block. Это безопаснее и не хуже, чем обычные массивы. В The C++ Язык программирования, 3-е издание, Bjarne Stroustrup представляет аналогичный класс, называемый c_array, который я (Nicolai Josuttis) представил слегка измененный в моей книге С++ Стандартная библиотека - A Tutorial and Reference, называемый carray. Это суть этих подходов, отмеченных многими отзывами от boost.

Рассмотрев различные названия, мы решили назвать этот класс просто array.

Обратите внимание, что этот класс предлагается включить в следующий Технический отчет, который расширит стандарт C++ (см. http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1548.htm).

Обновление: std::array является (по состоянию на C++11) частью стандарта C++. Различия между boost::array и std::array минимальны. Если вы используете C++11, вы должны рассмотреть возможность использования std::array вместо boost::array.

Класс array выполняет большинство, но не все требования «передаваемых контейнеров» (см. Раздел 23.1, [lib.container.requirements] стандарта C++). Основания массива не являются обратимым контейнером STL, потому что:

  • Строителей не предусмотрено.
  • Элементы могут иметь неопределенное первоначальное значение (см. секцию под названием “Design Rationale”).
  • swap() не имеет постоянной сложности.
  • размер() всегда постоянен, исходя из второго аргумента шаблона типа.
  • Контейнер не обеспечивает поддержку аллокатора.

Он не удовлетворяет требованиям «последовательности» (см. Раздел 23.1.1, [lib.sequence.reqmts] стандарта C++), за исключением того, что:


PrevUpHomeNext

Статья Chapter 5. Boost.Array раздела The Boost C++ Libraries BoostBook Documentation Subset Part I. The Boost C++ Libraries (BoostBook Subset) может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Part I. The Boost C++ Libraries (BoostBook Subset) ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 17:54:00/0.006659984588623/0