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

Vector Property Map

Boost , ,

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

C++ Boost

template<typename T, typename IndexMap = identity_property_map>
class vector_property_map;

Эта карта свойств используется для эффективного хранения свойств для переменного числа элементов. Это где-то междуassociative_property_mapиiterator_property_map.. Последний очень быстрый, но требует, чтобы при создании карты свойств было известно количество хранимых элементов. Первый не имеет этого требования, но медленнее и требует сопоставимости хранимых элементов.

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

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

Пример

Пример3.cpp:

<

#include <boost/property_map/vector_property_map.hpp>
#include <string>
#include <iostream>
int main()
{
    boost::vector_property_map<std::string> m;
    
    // Assign string to '4'. 
    m<
vector_property_map& operator=(const vector_property_map&)
>= "e"; std::cout << "'" << m<
vector_property_map& operator=(const vector_property_map&)
><< "'\n"; // Grab string from '10'. Since none is associated, // "" will be returned. std::cout << "'" << m<< "'\n"; }
>

Где определен

boost/property_map/vector_property_map.hpp

Модель

Lvalue Property Map

Шаблонные параметры

ПараметрОписаниеДефолт
TТип стоимости имущества.идолжны быть совместимы. 
IndexMapДолжна быть модельКарта читаемых свойстви тип значения должен быть конвертируемым вstd::vector< T>::size_type.identity_property_map

Члены

В дополнение к методам и функциям, требуемымLvalue Property Map, этот класс имеет следующие члены.


<
vector_property_map(const IndexMap& index = IndexMap())
>Конструктор, который берет индексную карту.
<
vector_property_map(unsigned initial_size, const IndexMap& index = IndexMap())
>Данная конструкторская версия позволяет указать максимальный индекс элемента, который будет храниться. Правильное число улучшит производительность, но семантика всегда одинакова.
<
vector_property_map(const vector_property_map&)
>Копирование конструктора. Копия будет делиться теми же данными, и изменения, внесенные в нее, повлияют на исходную карту свойств.
<
vector_property_map& operator=(const vector_property_map&)
>Назначение оператора. Семантика такая же, как и для конструктора копий.
<
reference operator[](const key_type& v) const
>Оператор скобки для доступа к собственности.
<
std::vector<T>::iterator storage_begin()
std::vector<T>::iterator storage_end()
std::vector<T>::const_iterator storage_begin()
std::vector<T>::const_iterator storage_end()
>

Эта группа методов дает доступ к начальным и конечным итераторам основного вектора.

Rationale: The methods are handy, for example, when it's needed to specify a single value for all elements in a freshly created property map. The methods are not called simply "begin" and "end" since conceptually, vector_property_map is unbounded map, and has no end iterator. The direct access to the underlying method is not provided, since it would decrease encapsulation and make future performance tuning dangerous.

Acknolegements: Matthias Troyer suggested adding those functions.


void reserve(unsigned size)
Reserve the space for storing elements with maximum index of 'size'. Unless element with greater index is accesses, all accesses will be take O(1) time.

Non-Member functions


template
vector_property_map
make_vector_property_map(IndexMap index)
{
  return vector_property_map(index);
} 
A function for conveniently creating a vector property map.

Copyright © 2002Джереми Сик, Университет Индианыjsiek@osl.iu.edu)
Ли-Куан Ли, Университет Индианыllee1@osl.iu.edu)
Эндрю Лумсдейн, Университет Индианыlums@osl.iu.edu.
Copyright © 2003Владимир Прус

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




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



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


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-07-05 02:38:36/0.0037357807159424/0