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

Class attribute_value_set

Boost , Chapter 1. Boost.Log v2 , Attributes

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

Class attribute_value_set

boost::log::attribute_value_set — A set of attribute values.

Synopsis

// In header: <boost/log/attributes/attribute_value_set.hpp>

class attribute_value_set {
public:
  // types
  typedef attribute_name                           key_type;         // Key type. 
  typedef attribute_value                          mapped_type;      // Mapped attribute type. 
  typedef std::pair< const key_type, mapped_type > value_type;       // Value type. 
  typedef value_type &                             reference;        // Reference type. 
  typedef value_type const &                       const_reference;  // Const reference type. 
  typedef value_type *                             pointer;          // Pointer type. 
  typedef value_type const *                       const_pointer;    // Const pointer type. 
  typedef std::size_t                              size_type;        // Size type. 
  typedef std::ptrdiff_t                           difference_type;  // Pointer difference type. 
  typedef implementation_defined                   const_iterator; 
  // construct/copy/destruct
  explicit attribute_value_set(size_type = 8);
  attribute_value_set(attribute_value_set &&) noexcept;
  attribute_value_set(attribute_set const &, attribute_set const &, 
                      attribute_set const &, size_type = 8);
  attribute_value_set(attribute_value_set const &, attribute_set const &, 
                      attribute_set const &, size_type = 8);
  attribute_value_set(attribute_value_set &&, attribute_set const &, 
                      attribute_set const &, size_type = 8);
  attribute_value_set(attribute_value_set const &);
  attribute_value_set & operator=(attribute_value_set) noexcept;
  ~attribute_value_set();
  // public member functions
  void swap(attribute_value_set &) noexcept;
  const_iterator begin() const;
  const_iterator end() const;
  size_type size() const;
  bool empty() const;
  const_iterator find(key_type) const;
  mapped_type operator[](key_type) const;
  template<typename DescriptorT, template< typename > class ActorT> 
    result_of::extract< typename expressions::attribute_keyword< DescriptorT, ActorT >::value_type, DescriptorT >::type 
    operator[](expressions::attribute_keyword< DescriptorT, ActorT > const &) const;
  size_type count(key_type) const;
  void freeze();
  std::pair< const_iterator, bool > insert(key_type, mapped_type const &);
  std::pair< const_iterator, bool > insert(const_reference);
  template<typename FwdIteratorT> void insert(FwdIteratorT, FwdIteratorT);
  template<typename FwdIteratorT, typename OutputIteratorT> 
    void insert(FwdIteratorT, FwdIteratorT, OutputIteratorT);
};

Description

Набор значений атрибутов представляет собой ассоциативный контейнер с именем атрибута в качестве ключа и указателем на объект значения атрибута в качестве отображенного типа. Это совокупность элементов с уникальными ключами, то есть в наборе может быть только одно значение атрибута с заданным именем. Что касается возможностей только для чтения, установленный интерфейс близок к<std::unordered_map>.

Набор предназначен только для добавления элементов к нему. После добавления значение атрибута не может быть удалено из набора.

Пример набора значений атрибутов может быть построен из трех наборов атрибутов. Конструктор пытается приспособить значения всех атрибутов из наборов. Возможна ситуация, когда одноимённый атрибут находится в более чем одном наборе атрибутов. Эта задача решается на построении набора ценностей: три набора атрибутов имеют разные приоритеты при решении конфликтов.

С библиотечной точки зрения три набора атрибутов источника являются глобальными, нитевидными и специфичными для источника атрибутами, причем последний имеет наивысший приоритет. Эта функция позволяет переопределять атрибуты более широких областей с более конкретными.

Ради производительности значения атрибутов не сразу приобретаются из наборов атрибутов при строительстве. Вместо этого приобретение по требованию выполняется либо по ссылке на итератор, либо по вызову метода<freeze>. После приобретения ценность атрибута остается в наборе до его разрушения. Этот нюанс не влияет на другие свойства набора, такие как размер или способность поиска. Ядро регистрации автоматически замораживает набор в нужной точке, поэтому пользователи не должны беспокоиться, если они вручную не создают наборы значений атрибутов.

[Note]Note

Наборы атрибутов, которые использовались для построения набора значений, не должны изменяться или уничтожаться до тех пор, пока набор значений не будет заморожен. В противном случае поведение не определено.

attribute_value_set public types

  1. TypedefРеализация_определяетсяconst_iterator;

    Тип постоянного итератора с двунаправленными возможностями.

attribute_value_set public construct/copy/destruct

  1. explicitattribute_value_set(size_typereserve_count=8);

    Конструктор по умолчанию

    Конструктор создает пустой набор, который может быть заполнен позже последующими вызовами методаinsert. Необязательно, объем хранилища, зарезервированный для элементов, которые должны быть вставлены, может быть передан конструктору. Построенный комплекс заморожен.

  2. <
    attribute_value_set(attribute_value_set&&that)noexcept;
    >

    Переместить конструктор

  3. attribute_value_set(attribute_setconst&source_attrs,
                       attribute_setconst&thread_attrs,
                       attribute_setconst&global_attrs,
                       size_typereserve_count=8);

    Конструктор принимает три набора атрибутов в набор значений.атрибуты source_attrsимеют наибольшее предпочтение, когда одноимённый атрибут встречается в нескольких наборах,global_attrsимеет наименьшее. Построенный комплект не замораживается.

  4. Параметры:

    Число элементов, зарезервированных для резервирования места.

    reserve_count

    Параметры:

    global_attrs

    Набор глобальных атрибутов.

    reserve_count

    Количество элементов для резервирования места в дополнение к элементам в предоставленных трех наборах атрибутов.

    source_attrs

    Набор специфических атрибутов источника.

    thread_attrs

    Набор нитевидных атрибутов.

  • attribute_value_set(attribute_value_setconst&source_attrs,
                       attribute_setconst&thread_attrs,
                       attribute_setconst&global_attrs,
                       size_typereserve_count=8);

    Конструктор принимает три набора атрибутов в набор значений. Атрибутыsource_attrsимеют наибольшее предпочтение, когда одноимённый атрибут встречается в нескольких наборах,global_attrsимеет наименьшее. Сконструированный набор не заморожен.

    Параметры:

    global_attrs

    Набор глобальных атрибутов.

    reserve_count

    Количество элементов для резервирования места в дополнение к элементам в трех наборах атрибутов.

    source_attrs

    Набор исходных атрибутов.

    thread_attrs

    Набор нитевидных атрибутов.

    Требует:

    источник_attrsнабор заморожен.

  • <
    attribute_value_set(attribute_value_set&&source_attrs,
                       attribute_setconst&thread_attrs,
                       attribute_setconst&global_attrs,
                       size_typereserve_count=8);
    >

    Конструктор принимает три набора атрибутов в набор значений.атрибуты source_attrsимеют наибольшее предпочтение, когда одноимённый атрибут встречается в нескольких наборах,global_attrsимеет наименьшее. Построенный комплект не замораживается.

    Параметры:

    <global_attrs>

    Набор глобальных атрибутов.

    <reserve_count>

    Количество элементов для резервирования места в дополнение к элементам в трех наборах атрибутов.

    <source_attrs>

    Набор специфических атрибутов источника.

    <thread_attrs>

    Набор нитевидных атрибутов.

    Требуется:

    Наборsource_attrsзаморожен.

  • attribute_value_set(attribute_value_setconst&that);

    Копировать конструктор.

    Требуется:

    Оригинальный набор заморожен.

    Последующие условия:

    Построенный набор замороженstd::equal(begin(), end(), that.begin()) == true

    .
  • <
    attribute_value_set&operator=(attribute_value_setthat)noexcept;
    >

    Оператор передачи

  • <
    ~attribute_value_set();
    >

    Разрушитель. высвобождает все указанные значения атрибутов.

  • attribute_value_set public member functions

    1. <
      voidswap(attribute_value_set&that)noexcept;
      >

      Два набора

      Бросок:Ничего.

    2. const_iteratorbegin()const;

      Возвращение:

      Итератор к первому элементу набора.

    3. const_iteratorend()const;

      Возвращение:

      Итератор к последнему элементу набора.

    4. size_typesize()const;

      Возвращение:

      Количество элементов в наборе.

    5. <
      boolempty()const;
      >

      Возврат:

      <true>, если в контейнере нет элементов,<false>в противном случае.

    6. <
      const_iteratorfind(key_typekey)const;
      >

      Способ находит значение атрибута по имени.

      Параметры:

      [[<freeze>] [<freeze>] [<freeze>] [<freeze>] [<freeze>] [<freeze>] [<freeze>] [<freeze>] [<freeze>] [<freeze>] [<freeze>] [<freeze>] [<freeze>] [<freeze>] [<freeze>] [<freeze>] [<freeze>] [[

      Итератор к найденному элементу или<end()>, если атрибут с таким названием не найден.

    7. mapped_typeoperator[](key_typekey)const;

      Альтернативный синтаксис поиска.

      Параметры:

      Имя атрибута.

      Возвращение:

      Указатель на значение атрибута, если он найден сключом, по умолчанию построенным отображенным значением.

    8. template<typenameDescriptorT,template<typename>classActorT>
       result_of::extract<typenameexpressions::attribute_keyword<DescriptorT,ActorT>::value_type,DescriptorT>::type
       operator[](expressions::attribute_keyword<DescriptorT,ActorT>const&keyword)const;

      Альтернативный синтаксис поиска.

      Параметры:

      keyword

      Ключевое слово атрибута.

      Возврат:

      Аvalue_refс извлеченным значением атрибута, если он найден, пустvalue_refв противном случае.

    9. <
      size_typecount(key_typekey)const;
      >

      Метод подсчитывает количество вхождений значений атрибутов в наборе. Поскольку может быть только одно значение атрибута с конкретным ключом, способ всегда возвращает 0 или 1.

      Параметры:

      <key>

      Имя атрибута.

      Возвращение:

      Количество раз значение атрибута находится в контейнере.

    10. voidfreeze();

      Метод приобретает значения всех принятых атрибутов.

      Постусловия:

      Набор заморожен.

    11. <
      std::pair<const_iterator,bool>
      insert(key_typekey,mapped_typeconst&mapped);
      >

      Вставляет элемент в набор. Сложность операции амортизируется постоянной.

      Параметры:

      <key>

      Имя атрибута.

      <mapped>

      Значение атрибута.

      Требуется:

      Возвращение:

      Итератор к вставленному элементу и<true>, если вставка удалась. В противном случае, если набор уже содержит одноимённое значение атрибута, итератор к существующему элементу и<false>.

    12. <
      std::pair<const_iterator,bool>insert(const_referencevalue);
      >

      Вставляет элемент в набор. Сложность операции амортизируется постоянной.

      Параметры:

      <value>

      Имя и значение атрибута.

    13. Требуется:

      Возвращение:

      Итератор к вставленному элементу и<true>, если вставка удалась. В противном случае, если набор уже содержит одноимённое значение атрибута, итератор к существующему элементу и<false>.

    14. template<typenameFwdIteratorT>
       voidinsert(FwdIteratorTbegin,FwdIteratorTend);

      Метод введения массы. Сложность операции линейна по отношению к количеству вставленных элементов.

      Параметры:

      begin

      Передний итератор, указывающий на первый вставленный элемент.

      end

      Передний итератор, указывающий на послепоследний вставленный элемент.

      Требуется:

      Набор заморожен.

    15. <
      template<typenameFwdIteratorT,typenameOutputIteratorT>
       voidinsert(FwdIteratorTbegin,FwdIteratorTend,OutputIteratorTout);
      >

      Способ вставки массы с возможностью приобретения итераторов к вставленным элементам. Сложность операции является линейной по отношению к числу вставленных элементов, умножая сложность заполненияитератора.

      Параметры:

      <begin><begin>

      Передний итератор, указывающий на первый вставленный элемент.

      <end>

      Передний итератор, указывающий на послепоследний вставленный элемент.

      <out>

      Выходной итератор, который получает результаты вставки элементов.

      Требуется:

      Набор заморожен.


    PrevUpHomeNext

    Статья Class attribute_value_set раздела Chapter 1. Boost.Log v2 Attributes может быть полезна для разработчиков на c++ и boost.




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



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


    реклама


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

    Время компиляции файла: 2024-08-30 11:47:00
    2025-05-19 20:36:57/0.0094940662384033/0