using namespace std;
// Определение двухсторонней очереди целых чисел
deque dqlntegers;
10
// Вставка целых чисел в конец массива
dqlntegers.push_back (3);
dqlntegers.push_back (4);
dqlntegers.push_back (5);
Класс deque библиотеки STL
|
4 1 9
|
Вставка целых чисел в начало массива dqlntegers.push_front (2); dqlntegers.push_front (1); dqlntegers.push_front (0);
cout « "The contents of the deque after inserting elements cout « "at the top and bottom are:" « endl;
Отображение содержимого на экране for ( size_t nCount = 0
nCount < dqlntegers.size ()
++ nCount )
{
cout « "Element [" « nCount « "] = "; cout « dqlntegers [nCount] « endl;
} '
cout « endl;
Извлечение элемента с начала dqlntegers.pop_front ();
// Извлечение элемента с конца
2 9
|
dqlntegers.pop_back ();
|
|
|
cout
|
«
|
"The contents of the deque after
|
erasing an element ";
|
4 z
|
cout
|
«
|
"from the top and bottom are:" «
|
endl;
|
4 3
|
|
|
|
|
Отображает содержимое снова: на сей раз при помощи итераторов
При компиляции на устаревших компиляторах удалите ключевое
слово auto и снимите комментарий со следующей строки
// deque ::iterator iElementLocator;
for (auto iElementLocator = dqlntegers.begin ()
; iElementLocator != dqlntegers.end ()
; ++ iElementLocator )
5 3 {
size_t Offset = distance (dqlntegers.begin (), iElementLocator);
52: cout « "Element [" « Offset « "] = " « *iElementLocator
endl;
}
54:
return 0;
Результат
The contents of the deque after inserting elements at the top and bottom are:
Element [0] = 0
Element [1] = 1
Element [2] = 2
Element [3] = 3
ЗАНЯТИЕ 17. Классы динамических массивов библиотеки STL
Element [4] = 4
Element [5] = 5
The contents of
Element [0] = 1
Element [1] = 2
Element [2] = 3
Element [3] = 4
Анализ
строке 10 создается экземпляр двухсторонней очереди целых чисел. Обратите вни мание, насколько похож этот синтаксис на синтаксис создания экземпляра вектора целых чисел. Строки 11-14 демонстрирую т применение функции-члена p u s h _ b a c k () класс-d eq u e , а строки 16-19 — функции-члена p u s h _ f r o n t (). Последнее отличает двухсто роннюю очередь от вектора. Применение метода p o p _ f r o n t () показано в строке 37. Перу вый механизм отображения содержимого двухсторонней очереди использует для доступ*
элементам синтаксис, как у массива, а второй — итераторы. В последнем случае, кап показано в строках 47-53, для вычисления позиции смещения элемента в двухстороннеё очереди используется алгоритм s t d : : d i s t a n c e ( ) , точно так же, как и при работе с век тором в листинге 17.5.
РЕКОМЕНДУЕТСЯ
Используйте динамический массив векторов или двухстороннюю очередь, когда неизвестно количество элементов, которые необходимо хранить
Помните, что вектор может расти только с кон ца, при помощи метода pushjoack ()
Помните, что двухсторонняя очередь может ра сти на обоих направлениях, при помощи мето дов push_back {) и push__front {)
Do'stlaringiz bilan baham: |