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

Unconstrained Sets

Boost , Chapter 1. Boost.Bimap , The tutorial

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

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

Неограниченные наборы полезны по следующим причинам:

  • Тип бикарты имеет более сильные гарантии, чем его стандартный эквивалент, и включает в себя некоторые полезные функции (заменить, изменить), которые стандарт не имеет.
  • Вы можете рассматривать карту как совокупность отношений.
  • Использование такого рода карты делает код очень расширяемым. Если в любой момент разработки возникает необходимость проведения поисковых запросов с правой стороны картирования, единственное необходимое изменение - typedef.

Учитывая этот бикартовый экземпляр,

typedef bimap< std::string, unconstrained_set_of<int> > bm_type;
typedef bm_type::left_map map_type;
bm_type bm;
map_type & m = bm.left;

или эта стандартная карта один

typedef std::map< std::string, int > map_type;
map_type m;

Следующий фрагмент кода действителен

m["one"] = 1;
assert( m.find("one") != m.end() );
for( map_type::iterator i = m.begin(), iend = m.end(); i != iend; ++i )
{
    1++(i->second);
}
m.erase("one");

1

Правильная коллекция бикарта является мутной, поэтому ее элементы могут быть изменены с помощью итераторов.

Но использование бикарты имеет некоторые преимущества

typedef map_type::const_iterator const_iterator;
typedef std::pair<const_iterator,const_iterator> const_range;
1const_range r = m.range( "one" <= _key, _key <= "two" );
for( const_iterator i = r.first; i != r.second; ++i )
{
    std::cout << i->first << "-->" << i->second << std::endl;
}
m.modify_key( m.begin(), _key = "1" );

1

Этот диапазон является моделью BidirectionalRange, читайте docs of Boost. Проверить больше информации.

Go to source code


PrevUpHomeNext

Статья Unconstrained Sets раздела Chapter 1. Boost.Bimap The tutorial может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: The tutorial ::


реклама


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

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