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

Compressed_Pair

Boost , Compressed_Pair ,

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

Compressed_Pair

Steve Cleary

Beman Dawes

Howard Hinnant

John Maddock

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


Таблица содержания

Overview
Synopsis
Acknowledgments

Содержание<<boost/compressed_pair.hpp>>определяется внутри<namespaceboost>.

Класс<compressed_pair>очень похож на<std::pair>, но если любой из аргументов шаблона является пустым классом, топустая оптимизация базового классаприменяется для сжатия размера пары.

template <class T1, class T2>
class compressed_pair
{
public:
    typedef T1                                                 first_type;
    typedef T2                                                 second_type;
    typedef typename call_traits<first_type>::param_type       first_param_type;
    typedef typename call_traits<second_type>::param_type      second_param_type;
    typedef typename call_traits<first_type>::reference        first_reference;
    typedef typename call_traits<second_type>::reference       second_reference;
    typedef typename call_traits<first_type>::const_reference  first_const_reference;
    typedef typename call_traits<second_type>::const_reference second_const_reference;
             compressed_pair() : base() {}
             compressed_pair(first_param_type x, second_param_type y);
    explicit compressed_pair(first_param_type x);
    explicit compressed_pair(second_param_type y);
    compressed_pair& operator=(const compressed_pair&);
    first_reference       first();
    first_const_reference first() const;
    second_reference       second();
    second_const_reference second() const;
    void swap(compressed_pair& y);
};

К двум членам пары можно получить доступ, используя функции<first()>и<second()>. Обратите внимание, что не все функции-члены могут быть реализованы для всех типов параметров шаблона. В частности,<compressed_pair>может быть инстанцирован для эталонных и массивных типов, однако в этих случаях диапазон конструкторов, которые могут быть использованы, ограничен. Если типы<T1>и<T2>однотипны, то существует только одна версия одноаргументного конструктора, и этот конструктор инициализирует оба значения в паре к пройденному значению.

Обратите внимание, что если любой из членов является POD-типом, то этот член не является нулевым инициализируемым конструктором по умолчанию<compressed_pair>: вы должны предоставить начальное значение для этих типов, если вы хотите, чтобы они имели значение по умолчанию.

Обратите внимание, что<compressed_pair>не может быть инстанцирован, если один из аргументов шаблона является союзным типом, если нет поддержки компилятора<boost::is_union>или если<boost::is_union>специализируется на союзном типе.

Наконец, предостережение для пользователей Visual C++ 6: если любой аргумент является пустым типом, то назначение этого участника приведет к повреждению памяти, если пустой тип не имеет оператора назначения «ничего не делать». Это связано с ошибкой в том, как VC6 генерирует неявные операторы присваивания.

На основе вкладов Стива Клири, Бемана Доуса, Говарда Хиннанта и Джона Мэддока.

СохранилДжон Мэддок.

Последний пересмотр: 21 сентября 2016 года в 14:46:48 GMT


Статья Compressed_Pair раздела Compressed_Pair может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-07-04 15:59:46/0.0040028095245361/0