Контейнерный модуль предопределяет набор ленивых функций, которые работают на контейнерах STL. Эти функции обеспечивают механизм ленивой оценки общественных функций контейнеров STL. Ленивые функции представляют собой тонкие обертки, которые просто пересылаются своим соответствующим коллегам в библиотеке STL.
Ленивые функции предусмотрены для всех членских функций следующих контейнеров:
дека
список
карта
мультикарта
вектор
Действительно, если в вашем классе есть функции-члены с теми же именами и подписями, что и перечисленные ниже, то он будет автоматически поддерживаться. Подводя итог, ленивые функции предусмотрены для членских функций:
назначать
в
назад
начинать
потенциал
ясный
пустой
конец
стирать
фронт
Get_allocator
вставить
key_comp
max_size
pop-back
Pop-front
push_back
push_front
бегин
сгибать
резерв
изменять размер
изменять размер
сплайс
value_comp
Названия ленивых функций те же, что и функции соответствующих членов. Разница в том, что ленивые функции являются свободными функциями и поэтому не используют синтаксис точки-члена.
Table 1.4. Sample usage
«Обычная» версия
«Ленькая» версия
<my_vector.at(5)>
<at(arg1,5)>
<my_list.size()>
<size(arg1)>
<my_vector1.swap(my_vector2)>
<swap(arg1,arg2)>
Обратите внимание, что функции-члены с именами, которые сталкиваются с алгоритмами stl, отсутствуют. Это будет представлено в модуле алгоритма Phoenix.
Здесь нет поддержки для ленивых версий<operator+=>,<operator[]>и т. д. Такие операторы не являются специфическими для контейнеров STL, и поэтому ленивые версии можно найти воператорах.
В следующей таблице описаны функции контейнера и их семантика.
Аргументы в скобках обозначают факультативные параметры.
Table 1.5. Lazy STL Container Functions
Функция
Семантика
<assign(c,a[,b,c])>
<c.assign(a[,b,c])>
<at(c,i)>
<c.at(i)>
<back(c)>
<c.back()>
<begin(c)>
<c.begin()>
<capacity(c)>
<c.capacity()>
<clear(c)>
<c.clear()>
<empty(c)>
<c.empty()>
<end(c)>
<c.end()>
<erase(c,a[,b])>
<c.erase(a[,b])>
<front(c)>
<c.front()>
<get_allocator(c)>
<c.get_allocator()>
<insert(c,a[,b,c])>
<c.insert(a[,b,c])>
<key_comp(c)>
<c.key_comp()>
<max_size(c)>
<c.max_size()>
<pop_back(c)>
<c.pop_back()>
<pop_front(c)>
<c.pop_front()>
<push_back(c,d)>
<c.push_back(d)>
<push_front(c,d)>
<c.push_front(d)>
<pop_front(c)>
<c.pop_front()>
<rbegin(c)>
<c.rbegin()>
<rend(c)>
<c.rend()>
<reserve(c,n)>
<c.reserve(n)>
<resize(c,a[,b])>
<c.resize(a[,b])>
<size(c)>
<c.size()>
<splice(c,a[,b,c,d])>
<c.splice(a[,b,c,d])>
<value_comp(c)>
<c.value_comp()>
Статья Container раздела Chapter 1. Phoenix 3.2.0 STL может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.