Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Rozmieszcza elementy danego typu w układzie liniowym i, podobnie jak wektor, umożliwia szybki losowy dostęp do dowolnego elementu oraz wydajne wstawianie i usuwanie z tyłu kontenera. Jednak w przeciwieństwie do wektora deque klasa obsługuje również wydajne wstawianie i usuwanie z przodu kontenera.
Składnia
template <class Type, class Allocator = allocator<Type>>
class deque;
Parametry
Type
Typ danych elementu, który ma być przechowywany w obiekcie deque.
Allocator
Typ reprezentujący przechowywany obiekt alokatora, który hermetyzuje szczegóły dotyczące dequealokacji i cofania przydziału pamięci. Ten argument jest opcjonalny, a wartość domyślna to allocator<Type>.
Uwagi
Wybór typu kontenera powinien ogólnie być oparty o typ wyszukiwania i wstawiania wymagany przez aplikację.
Vectors powinien być preferowanym kontenerem do zarządzania sekwencją, gdy losowy dostęp do dowolnego elementu znajduje się w warstwie Premium, a operacje wstawiania lub usuwania elementów są wymagane tylko na końcu sekwencji. Wydajność kontenera listy jest lepsza, gdy wydajne wstawiania i usuwania (w stałym czasie) w dowolnej lokalizacji w sekwencji są w warstwie Premium. Takie operacje w środku sekwencji wymagają kopiowania elementów i przypisań proporcjonalnych do liczby elementów w sekwencji (czas liniowy).
Deque reallocation występuje, gdy funkcja składowa musi wstawić lub wymazać elementy sekwencji:
Jeśli element zostanie wstawiony do pustej sekwencji lub jeśli element zostanie wymazany, aby pozostawić pustą sekwencję, iteratory wcześniej zwrócone przez
beginiendstaną się nieprawidłowe.Jeśli element zostanie wstawiony na pierwszym miejscu
dequeelementu , wszystkie iteratory, ale nie odwołania, które wyznaczają istniejące elementy, stają się nieprawidłowe.Jeśli element zostanie wstawiony na końcu
dequeelementu , iendwszystkie iteratory, ale bez odwołań, oznacza to, że istniejące elementy staną się nieprawidłowe.Jeśli element jest wymazany z przodu
dequeelementu , tylko iterator i odwołania do wymazanego elementu stają się nieprawidłowe.Jeśli ostatni element zostanie wymazany z końca
dequeelementu , tylko iterator do ostatniego elementu i odwołania do wymazanego elementu staną się nieprawidłowe.
W przeciwnym razie wstawianie lub wymazywanie elementu powoduje unieważnienie wszystkich iteratorów i odwołań.
Elementy członkowskie
Konstruktory
| Nazwa/nazwisko | opis |
|---|---|
deque |
Tworzy element deque. Kilka konstruktorów jest dostępnych do skonfigurowania zawartości nowego deque na różne sposoby: puste; załadowane z określoną liczbą pustych elementów; zawartość przeniesiona lub skopiowana z innego deque; zawartość skopiowana lub przeniesiona przy użyciu iteratora; i jeden element skopiowany do dequecount czasów. Niektóre konstruktory umożliwiają tworzenie elementów przy użyciu niestandardowego allocator elementu. |
Typedefs
| Nazwa/nazwisko | opis |
|---|---|
allocator_type |
Typ reprezentujący klasę allocatordeque dla obiektu. |
const_iterator |
Typ, który udostępnia iterator dostępu losowego, który może uzyskiwać dostęp do elementów i odczytywać je jako dequeconst |
const_pointer |
Typ, który dostarcza wskaźnik do elementu w deque obiekcie jako const. |
const_reference |
Typ, który zawiera odwołanie do elementu w deque elemencie do odczytu i innych operacji jako const. |
const_reverse_iterator |
Typ, który udostępnia iterator dostępu losowego, który może uzyskiwać dostęp do elementów i odczytywać je w deque formacie const. Element deque jest wyświetlany odwrotnie. Aby uzyskać więcej informacji, zobacz reverse_iterator Klasa |
difference_type |
Typ, który zapewnia różnicę między dwoma iteratorami dostępu losowego, które odwołują się do elementów w tym samym obiekcie deque. |
iterator |
Typ, który udostępnia iterator dostępu losowego, który może odczytywać lub modyfikować dowolny element w obiekcie deque. |
pointer |
Typ, który dostarcza wskaźnik do elementu w elemecie deque. |
reference |
Typ, który zawiera odwołanie do elementu przechowywanego w obiekcie deque. |
reverse_iterator |
Typ, który udostępnia iterator dostępu losowego, który może odczytywać lub modyfikować element w obiekcie deque. Element deque jest wyświetlany w odwrotnej kolejności. |
size_type |
Typ, który zlicza liczbę elementów w obiekcie deque. |
value_type |
Typ reprezentujący typ danych przechowywany w obiekcie deque. |
Funkcje
| Nazwa/nazwisko | opis |
|---|---|
assign |
Usuwa elementy z elementu deque i kopiuje nową sekwencję elementów do elementu docelowego deque. |
at |
Zwraca odwołanie do elementu w określonej lokalizacji w elemencie deque. |
back |
Zwraca odwołanie do ostatniego elementu elementu .deque |
begin |
Zwraca iterator dostępu losowego odnoszący się do pierwszego elementu w elemecie deque. |
cbegin |
const Zwraca iterator do pierwszego elementu w obiekcie deque. |
cend |
Zwraca iterator dostępu losowego const , który wskazuje tuż poza końcem obiektu deque. |
clear |
Usuwa wszystkie elementy elementu deque. |
crbegin |
Zwraca iterator dostępu losowego const do pierwszego elementu w widoku w odwrotnej deque kolejności. |
crend |
Zwraca iterator dostępu losowego const do pierwszego elementu w widoku w odwrotnej deque kolejności. |
emplace |
Wstawia element skonstruowany w miejscu do deque obiektu w określonej pozycji. |
emplace_back |
Dodaje element skonstruowany na końcu elementu deque. |
emplace_front |
Dodaje element skonstruowany na początku elementu deque. |
empty |
Zwraca wartość true , jeśli deque element zawiera zero elementów, a false jeśli zawiera co najmniej jeden element. |
end |
Zwraca iterator dostępu losowego, który wskazuje tuż poza końcem obiektu deque. |
erase |
Usuwa element lub zakres elementów z deque określonych pozycji. |
front |
Zwraca odwołanie do pierwszego elementu w elemencie deque. |
get_allocator |
Zwraca kopię allocator obiektu, który jest używany do konstruowania obiektu deque. |
insert |
Wstawia element, kilka elementów lub zakres elementów do deque elementu w określonej pozycji. |
max_size |
Zwraca maksymalną możliwą długość obiektu deque. |
pop_back |
Usuwa element na końcu elementu deque. |
pop_front |
Usuwa element na początku elementu deque. |
push_back |
Dodaje element na końcu elementu deque. |
push_front |
Dodaje element na początku elementu deque. |
rbegin |
Zwraca iterator dostępu losowego do pierwszego elementu w odwróconym dequeobiekcie . |
rend |
Zwraca iterator dostępu losowego, który wskazuje tuż poza ostatnim elementem odwróconego dequeelementu . |
resize |
Określa nowy rozmiar elementu deque. |
shrink_to_fit |
Odrzuca nadmiarową pojemność. |
size |
Zwraca liczbę elementów w elem.deque |
swap |
Wymienia elementy dwóch deques. |
Operatory
| Nazwa/nazwisko | opis |
|---|---|
operator[] |
Zwraca odwołanie do deque elementu w określonej pozycji. |
operator= |
Zastępuje elementy elementu deque kopią innego dequeelementu . |
allocator_type
Typ reprezentujący klasę alokatora deque dla obiektu.
typedef Allocator allocator_type;
Uwagi
allocator_type jest synonimem parametru Allocatorszablonu .
Przykład
Zobacz przykład dla elementu get_allocator.
assign
Usuwa elementy z elementu deque i kopiuje nowy zestaw elementów do elementu docelowego deque.
template <class InputIterator>
void assign(
InputIterator First,
InputIterator Last);
void assign(
size_type Count,
const Type& Val);
void assign(initializer_list<Type> IList);
Parametry
First
Pozycja pierwszego elementu w zakresie elementów do skopiowania z argumentu deque.
Last
Pozycja pierwszego elementu poza zakresem elementów do skopiowania z argumentu deque.
Count
Liczba kopii elementu wstawionego do elementu deque.
Val
Wartość elementu wstawionego do elementu deque.
IList
Wstawiany initializer_list element do pliku deque.
Uwagi
Po wymazaniu wszystkich istniejących elementów w obiekcie docelowym deque wstawia określony zakres elementów z oryginalnego assign lub z innego deque elementu do elementu docelowego lub wstawia kopie nowego elementu określonej wartości do elementu docelowego dequedeque. deque
Przykład
// deque_assign.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>
#include <initializer_list>
int main()
{
using namespace std;
deque <int> c1, c2;
deque <int>::const_iterator cIter;
c1.push_back(10);
c1.push_back(20);
c1.push_back(30);
c2.push_back(40);
c2.push_back(50);
c2.push_back(60);
deque<int> d1{ 1, 2, 3, 4 };
initializer_list<int> iList{ 5, 6, 7, 8 };
d1.assign(iList);
cout << "d1 = ";
for (int i : d1)
cout << i;
cout << endl;
cout << "c1 =";
for (int i : c1)
cout << i;
cout << endl;
c1.assign(++c2.begin(), c2.end());
cout << "c1 =";
for (int i : c1)
cout << i;
cout << endl;
c1.assign(7, 4);
cout << "c1 =";
for (int i : c1)
cout << i;
cout << endl;
}
d1 = 5678c1 =102030c1 =5060c1 =4444444
at
Zwraca odwołanie do elementu w określonej lokalizacji w elemencie deque.
reference at(size_type pos);
const_reference at(size_type pos) const;
Parametry
pos
Indeks dolny (lub numer położenia) elementu do odwołania w elemencie deque.
Wartość zwracana
Jeśli pos wartość jest większa niż rozmiar obiektu deque, at zgłasza wyjątek.
Uwagi
Jeśli zwracana wartość at elementu jest przypisana do const_referenceobiektu , deque nie można zmodyfikować obiektu. Jeśli wartość zwracana at obiektu jest przypisana do referenceobiektu , deque można go zmodyfikować.
Przykład
// deque_at.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>
int main( )
{
using namespace std;
deque <int> c1;
c1.push_back( 10 );
c1.push_back( 20 );
const int& i = c1.at( 0 );
int& j = c1.at( 1 );
cout << "The first element is " << i << endl;
cout << "The second element is " << j << endl;
}
The first element is 10
The second element is 20
back
Zwraca odwołanie do ostatniego elementu elementu .deque
reference back();
const_reference back() const;
Wartość zwracana
Ostatni element elementu .deque
deque Jeśli wartość jest pusta, wartość zwracana jest niezdefiniowana.
Uwagi
Jeśli zwracana wartość back elementu jest przypisana do const_referenceobiektu , deque nie można zmodyfikować obiektu. Jeśli wartość zwracana back obiektu jest przypisana do referenceobiektu , deque można go zmodyfikować.
Podczas kompilowania przy użyciu _ITERATOR_DEBUG_LEVEL wartości zdefiniowanej jako 1 lub 2 wystąpi błąd środowiska uruchomieniowego, jeśli spróbujesz uzyskać dostęp do elementu w pustym dequeelemecie . Aby uzyskać więcej informacji, zobacz Sprawdzone iteratory .
Przykład
// deque_back.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>
int main( )
{
using namespace std;
deque <int> c1;
c1.push_back( 10 );
c1.push_back( 11 );
int& i = c1.back( );
const int& ii = c1.front( );
cout << "The last integer of c1 is " << i << endl;
i--;
cout << "The next-to-last integer of c1 is " << ii << endl;
}
The last integer of c1 is 11
The next-to-last integer of c1 is 10
begin
Zwraca iterator odnoszący się do pierwszego elementu w elemecie deque.
const_iterator begin() const;
iterator begin();
Wartość zwracana
Iterator dostępu losowego odnoszący się do pierwszego elementu w deque lokalizacji lub kończy się powodzeniem pustego dequeelementu .
Uwagi
Jeśli zwracana wartość begin elementu jest przypisana do const_iteratorobiektu , deque nie można zmodyfikować obiektu. Jeśli wartość zwracana begin elementu jest przypisana do iteratorobiektu , deque można go zmodyfikować.
Przykład
// deque_begin.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>
int main( )
{
using namespace std;
deque <int> c1;
deque <int>::iterator c1_Iter;
deque <int>::const_iterator c1_cIter;
c1.push_back( 1 );
c1.push_back( 2 );
c1_Iter = c1.begin( );
cout << "The first element of c1 is " << *c1_Iter << endl;
*c1_Iter = 20;
c1_Iter = c1.begin( );
cout << "The first element of c1 is now " << *c1_Iter << endl;
// The following line would be an error because iterator is const
// *c1_cIter = 200;
}
The first element of c1 is 1
The first element of c1 is now 20
cbegin
const Zwraca iterator, który adresuje pierwszy element w zakresie.
const_iterator cbegin() const;
Wartość zwracana
const Iterator dostępu losowego, który wskazuje pierwszy element zakresu lub lokalizację tuż poza końcem pustego zakresu (dla pustego zakresu, cbegin() == cend()).
Uwagi
Przy zwracanej wartości cbeginelementu nie można modyfikować elementów w zakresie.
Możesz użyć tej funkcji składowej zamiast funkcji składowej begin() , aby zagwarantować, że zwracana wartość to const_iterator. Zazwyczaj jest używany w połączeniu ze auto słowem kluczowym potrącenia typu, jak pokazano w poniższym przykładzie. W tym przykładzie rozważmy Container , aby być kontenerem modyfikowalnym (innym niż const) jakiegokolwiek rodzaju, który obsługuje begin() i cbegin().
auto i1 = Container.begin();
// i1 is Container<T>::iterator
auto i2 = Container.cbegin();
// i2 is Container<T>::const_iterator
cend
Zwraca iterator, który adresuje lokalizację const tuż poza ostatnim elementem w zakresie.
const_iterator cend() const;
Wartość zwracana
Iterator dostępu swobodnego, który wskazuje tuż za koniec zakresu.
Uwagi
cend służy do testowania, czy iterator przeszedł koniec jego zakresu.
Możesz użyć tej funkcji składowej zamiast funkcji składowej end() , aby zagwarantować, że zwracana wartość to const_iterator. Zazwyczaj jest używany w połączeniu ze auto słowem kluczowym potrącenia typu, jak pokazano w poniższym przykładzie. W tym przykładzie rozważmy Container , aby być kontenerem modyfikowalnym (innym niż const) jakiegokolwiek rodzaju, który obsługuje end() i cend().
auto i1 = Container.end();
// i1 is Container<T>::iterator
auto i2 = Container.cend();
// i2 is Container<T>::const_iterator
Wartość zwracana przez cend nie powinna być wyłuszczone.
clear
Usuwa wszystkie elementy elementu deque.
void clear();
Przykład
// deque_clear.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>
int main( )
{
using namespace std;
deque <int> c1;
c1.push_back( 10 );
c1.push_back( 20 );
c1.push_back( 30 );
cout << "The size of the deque is initially " << c1.size( ) << endl;
c1.clear( );
cout << "The size of the deque after clearing is " << c1.size( ) << endl;
}
The size of the deque is initially 3
The size of the deque after clearing is 0
const_iterator
Typ, który udostępnia iterator dostępu losowego, który może uzyskiwać dostęp do elementu i odczytywać go const w elemecie deque.
typedef implementation-defined const_iterator;
Uwagi
Nie można użyć typu const_iterator do modyfikowania wartości elementu.
Przykład
Zobacz przykład dla elementu back.
const_pointer
Dostarcza wskaźnik do const elementu w elemecie deque.
typedef typename Allocator::const_pointer const_pointer;
Uwagi
Nie można użyć typu const_pointer do modyfikowania wartości elementu. Element iterator jest częściej używany do uzyskiwania deque dostępu do elementu.
const_reference
Typ, który zawiera odwołanie do elementu przechowywanego const w deque obiekcie do odczytu i wykonywania const operacji.
typedef typename Allocator::const_reference const_reference;
Uwagi
Nie można użyć typu const_reference do modyfikowania wartości elementu.
Przykład
// deque_const_ref.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>
int main( )
{
using namespace std;
deque <int> c1;
c1.push_back( 10 );
c1.push_back( 20 );
const deque <int> c2 = c1;
const int &i = c2.front( );
const int &j = c2.back( );
cout << "The first element is " << i << endl;
cout << "The second element is " << j << endl;
// The following line would cause an error as c2 is const
// c2.push_back( 30 );
}
The first element is 10
The second element is 20
const_reverse_iterator
Typ, który udostępnia iterator dostępu losowego, który może odczytywać dowolny const element w obiekcie deque.
typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
Uwagi
Typ const_reverse_iterator nie może modyfikować wartości elementu i jest używany do iterowania w odwrotnej deque części.
Przykład
Zapoznaj się z przykładem rbegin sposobu deklarowania i używania iteratora.
crbegin
const Zwraca iterator do pierwszego elementu w odwróconym dequeobiekcie .
const_reverse_iterator crbegin() const;
Wartość zwracana
Odwrotny const iterator dostępu losowego odnoszący się do pierwszego elementu w odwróconym deque lub odnoszącym się do tego, co było ostatnim elementem w niewróceniu deque.
Uwagi
Przy użyciu wartości zwracanej crbegindeque obiektu nie można modyfikować.
Przykład
// deque_crbegin.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>
int main( )
{
using namespace std;
deque <int> v1;
deque <int>::iterator v1_Iter;
deque <int>::const_reverse_iterator v1_rIter;
v1.push_back( 1 );
v1.push_back( 2 );
v1_Iter = v1.begin( );
cout << "The first element of deque is "
<< *v1_Iter << "." << endl;
v1_rIter = v1.crbegin( );
cout << "The first element of the reversed deque is "
<< *v1_rIter << "." << endl;
}
The first element of deque is 1.
The first element of the reversed deque is 2.
crend
const Zwraca iterator, który odnosi się do lokalizacji, która zakończyła się powodzeniem ostatniego elementu w odwróconym elemecie deque.
const_reverse_iterator crend() const;
Wartość zwracana
const Iterator odwrotnego dostępu losowego, który adresuje lokalizację, która zakończyła się powodzeniem ostatniego elementu w odwróconym deque elemecie (lokalizacja, która poprzedzała pierwszy element w niewróconym elemecie deque).
Uwagi
crend jest używany z odwróconym deque elementem, tak jak array::cend jest używany z elementem deque.
Przy użyciu wartości zwracanej crend (odpowiednio zdekrementowanej) deque nie można zmodyfikować obiektu.
crend można użyć do sprawdzenia, czy iterator odwrotny osiągnął koniec jego deque.
Wartość zwracana przez crend nie powinna być wyłuszczone.
Przykład
// deque_crend.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>
int main( )
{
using namespace std;
deque <int> v1;
deque <int>::const_reverse_iterator v1_rIter;
v1.push_back( 1 );
v1.push_back( 2 );
for ( v1_rIter = v1.rbegin( ) ; v1_rIter != v1.rend( ) ; v1_rIter++ )
cout << *v1_rIter << endl;
}
2
1
deque
Konstruuje deque określony rozmiar lub elementy określonej wartości albo z określonym alokatorem albo kopią wszystkich lub części innych dequeelementów .
deque();
explicit deque(const Allocator& Al);
explicit deque(size_type Count);
deque(size_type Count, const Type& Val);
deque(
size_type Count,
const Type& Val,
const Allocator& Al);
deque(const deque& Right);
template <class InputIterator>
deque(InputIterator First, InputIterator Last);
template <class InputIterator>
deque(
InputIterator First,
InputIterator Last,
const Allocator& Al);
deque(initializer_list<value_type> IList, const Allocator& Al);
Parametry
Al
Klasa alokatora do wykorzystania z tym obiektem.
Count
Liczba elementów w skonstruowanym dequeobiekcie .
Val
Wartość elementów w skonstruowanym dequeobiekcie .
Right
Element deque , którego konstrukcja deque ma być kopią.
First
Pozycja pierwszego elementu w zakresie elementów do skopiowania.
Last
Położenie pierwszego elementu poza zakresem elementów do skopiowania.
IList
Element initializer_list do skopiowania.
Uwagi
Wszystkie konstruktory przechowują obiekt alokatora (Al) i inicjują obiekt deque.
Pierwsze dwa konstruktory określają pusty początkowy ; dequedrugi określa również typ alokatora (_Al) do użycia.
Trzeci konstruktor określa powtórzenie określonej liczby (count) elementów wartości domyślnej dla klasy Type.
Czwarte i piąte konstruktory określają powtórzenieCount () elementów wartości val.
Szósty konstruktor określa kopię elementu dequeRight.
Siódme i ósme konstruktory kopiują zakres [First, Last)dequewartości .
Siódmy konstruktor przenosi element dequeRight.
Ósmy konstruktor kopiuje zawartość obiektu initializer_list.
Żaden z konstruktorów nie wykonuje żadnych tymczasowych reallocations.
Przykład
// compile with: /EHsc
#include <deque>
#include <iostream>
#include <forward_list>
int main()
{
using namespace std;
forward_list<int> f1{ 1, 2, 3, 4 };
f1.insert_after(f1.begin(), { 5, 6, 7, 8 });
deque <int>::iterator c1_Iter, c2_Iter, c3_Iter, c4_Iter, c5_Iter, c6_Iter;
// Create an empty deque c0
deque <int> c0;
// Create a deque c1 with 3 elements of default value 0
deque <int> c1(3);
// Create a deque c2 with 5 elements of value 2
deque <int> c2(5, 2);
// Create a deque c3 with 3 elements of value 1 and with the
// allocator of deque c2
deque <int> c3(3, 1, c2.get_allocator());
// Create a copy, deque c4, of deque c2
deque <int> c4(c2);
// Create a deque c5 by copying the range c4[ first, last)
c4_Iter = c4.begin();
c4_Iter++;
c4_Iter++;
deque <int> c5(c4.begin(), c4_Iter);
// Create a deque c6 by copying the range c4[ first, last) and
// c2 with the allocator of deque
c4_Iter = c4.begin();
c4_Iter++;
c4_Iter++;
c4_Iter++;
deque <int> c6(c4.begin(), c4_Iter, c2.get_allocator());
// Create a deque c8 by copying the contents of an initializer_list
// using brace initialization
deque<int> c8({ 1, 2, 3, 4 });
initializer_list<int> iList{ 5, 6, 7, 8 };
deque<int> c9( iList);
cout << "c1 = ";
for (int i : c1)
cout << i << " ";
cout << endl;
cout << "c2 = ";
for (int i : c2)
cout << i << " ";
cout << endl;
cout << "c3 = ";
for (int i : c3)
cout << i << " ";
cout << endl;
cout << "c4 = ";
for (int i : c4)
cout << i << " ";
cout << endl;
cout << "c5 = ";
for (int i : c5)
cout << i << " ";
cout << endl;
cout << "c6 = ";
for (int i : c6)
cout << i << " ";
cout << endl;
// Move deque c6 to deque c7
deque <int> c7(move(c6));
deque <int>::iterator c7_Iter;
cout << "c7 =";
for (int i : c7)
cout << i << " ";
cout << endl;
cout << "c8 = ";
for (int i : c8)
cout << i << " ";
cout << endl;
cout << "c9 = ";
for (int i : c9)
cout << i << " ";
cout << endl;
int x = 3;
}
// deque_deque.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>
int main( )
{
using namespace std;
deque <int>::iterator c1_Iter, c2_Iter, c3_Iter, c4_Iter, c5_Iter, c6_Iter;
// Create an empty deque c0
deque <int> c0;
// Create a deque c1 with 3 elements of default value 0
deque <int> c1( 3 );
// Create a deque c2 with 5 elements of value 2
deque <int> c2( 5, 2 );
// Create a deque c3 with 3 elements of value 1 and with the
// allocator of deque c2
deque <int> c3( 3, 1, c2.get_allocator( ) );
// Create a copy, deque c4, of deque c2
deque <int> c4( c2 );
// Create a deque c5 by copying the range c4[ first, last)
c4_Iter = c4.begin( );
c4_Iter++;
c4_Iter++;
deque <int> c5( c4.begin( ), c4_Iter );
// Create a deque c6 by copying the range c4[ first, last) and
// c2 with the allocator of deque
c4_Iter = c4.begin( );
c4_Iter++;
c4_Iter++;
c4_Iter++;
deque <int> c6( c4.begin( ), c4_Iter, c2.get_allocator( ) );
// Create a deque c8 by copying the contents of an initializer_list
// using brace initialization
deque<int> c8({ 1, 2, 3, 4 });
initializer_list<int> iList{ 5, 6, 7, 8 };
deque<int> c9( iList);
cout << "c1 = ";
for ( c1_Iter = c1.begin( ); c1_Iter != c1.end( ); c1_Iter++ )
cout << *c1_Iter << " ";
cout << endl;
cout << "c2 = ";
for ( c2_Iter = c2.begin( ); c2_Iter != c2.end( ); c2_Iter++ )
cout << *c2_Iter << " ";
cout << endl;
cout << "c3 = ";
for ( c3_Iter = c3.begin( ); c3_Iter != c3.end( ); c3_Iter++ )
cout << *c3_Iter << " ";
cout << endl;
cout << "c4 = ";
for ( c4_Iter = c4.begin( ); c4_Iter != c4.end( ); c4_Iter++ )
cout << *c4_Iter << " ";
cout << endl;
cout << "c5 = ";
for ( c5_Iter = c5.begin( ); c5_Iter != c5.end( ); c5_Iter++ )
cout << *c5_Iter << " ";
cout << endl;
cout << "c6 = ";
for ( c6_Iter = c6.begin( ); c6_Iter != c6.end( ); c6_Iter++ )
cout << *c6_Iter << " ";
cout << endl;
// Move deque c6 to deque c7
deque <int> c7( move(c6) );
deque <int>::iterator c7_Iter;
cout << "c7 =" ;
for ( c7_Iter = c7.begin( ) ; c7_Iter != c7.end( ) ; c7_Iter++ )
cout << " " << *c7_Iter;
cout << endl;
cout << "c8 = ";
for (int i : c8)
cout << i << " ";
cout << endl;
cout << "c9 = ";
or (int i : c9)
cout << i << " ";
cout << endl;
}
difference_type
Typ, który zapewnia różnicę między dwoma iteratorami odwołującymi się do elementów w ramach tego samego dequeelementu .
typedef typename Allocator::difference_type difference_type;
Uwagi
Element difference_type można również opisać jako liczbę elementów między dwoma wskaźnikami.
Przykład
// deque_diff_type.cpp
// compile with: /EHsc
#include <iostream>
#include <deque>
#include <algorithm>
int main( )
{
using namespace std;
deque <int> c1;
deque <int>::iterator c1_Iter, c2_Iter;
c1.push_back( 30 );
c1.push_back( 20 );
c1.push_back( 30 );
c1.push_back( 10 );
c1.push_back( 30 );
c1.push_back( 20 );
c1_Iter = c1.begin( );
c2_Iter = c1.end( );
deque <int>::difference_type df_typ1, df_typ2, df_typ3;
df_typ1 = count( c1_Iter, c2_Iter, 10 );
df_typ2 = count( c1_Iter, c2_Iter, 20 );
df_typ3 = count( c1_Iter, c2_Iter, 30 );
cout << "The number '10' is in c1 collection " << df_typ1 << " times.\n";
cout << "The number '20' is in c1 collection " << df_typ2 << " times.\n";
cout << "The number '30' is in c1 collection " << df_typ3 << " times.\n";
}
The number '10' is in c1 collection 1 times.
The number '20' is in c1 collection 2 times.
The number '30' is in c1 collection 3 times.
emplace
Wstawia element skonstruowany w miejscu do deque obiektu w określonej pozycji.
iterator emplace(
const_iterator _Where,
Type&& val);
Parametry
_Where
Położenie w miejscu, w deque którym jest wstawiany pierwszy element.
val
Wartość elementu wstawionego do elementu deque.
Wartość zwracana
Funkcja zwraca iterator wskazujący położenie, w którym nowy element został wstawiony do elementu deque.
Uwagi
Każda operacja wstawiania może być kosztowna, zobacz deque omówienie deque wydajności.
Przykład
// deque_emplace.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>
int main( )
{
using namespace std;
deque <int> v1;
deque <int>::iterator Iter;
v1.push_back( 10 );
v1.push_back( 20 );
v1.push_back( 30 );
cout << "v1 =" ;
for ( Iter = v1.begin( ) ; Iter != v1.end( ) ; Iter++ )
cout << " " << *Iter;
cout << endl;
// initialize a deque of deques by moving v1
deque < deque <int> > vv1;
vv1.emplace( vv1.begin(), move( v1 ) );
if ( vv1.size( ) != 0 && vv1[0].size( ) != 0 )
{
cout << "vv1[0] =";
for (Iter = vv1[0].begin( ); Iter != vv1[0].end( ); Iter++ )
cout << " " << *Iter;
cout << endl;
}
}
v1 = 10 20 30
vv1[0] = 10 20 30
emplace_back
Dodaje element skonstruowany na końcu elementu deque.
void emplace_back(Type&& val);
Parametry
val
Element dodany na końcu elementu deque.
Przykład
// deque_emplace_back.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>
int main( )
{
using namespace std;
deque <int> v1;
v1.push_back( 1 );
if ( v1.size( ) != 0 )
cout << "Last element: " << v1.back( ) << endl;
v1.push_back( 2 );
if ( v1.size( ) != 0 )
cout << "New last element: " << v1.back( ) << endl;
// initialize a deque of deques by moving v1
deque < deque <int> > vv1;
vv1.emplace_back( move( v1 ) );
if ( vv1.size( ) != 0 && vv1[0].size( ) != 0 )
cout << "Moved last element: " << vv1[0].back( ) << endl;
}
Last element: 1
New last element: 2
Moved last element: 2
emplace_front
Dodaje element skonstruowany na końcu elementu deque.
void emplace_front(Type&& val);
Parametry
val
Element dodany na początku elementu deque.
Przykład
// deque_emplace_front.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>
int main( )
{
using namespace std;
deque <int> v1;
v1.push_back( 1 );
if ( v1.size( ) != 0 )
cout << "Last element: " << v1.back( ) << endl;
v1.push_back( 2 );
if ( v1.size( ) != 0 )
cout << "New last element: " << v1.back( ) << endl;
// initialize a deque of deques by moving v1
deque < deque <int> > vv1;
vv1.emplace_front( move( v1 ) );
if ( vv1.size( ) != 0 && vv1[0].size( ) != 0 )
cout << "Moved last element: " << vv1[0].back( ) << endl;
}
Last element: 1
New last element: 2
Moved last element: 2
empty
Sprawdza, czy element deque jest pusty.
bool empty() const;
Wartość zwracana
true jeśli wartość deque jest pusta; false jeśli element deque nie jest pusty.
Przykład
// deque_empty.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>
int main( )
{
using namespace std;
deque <int> c1;
c1.push_back( 10 );
if ( c1.empty( ) )
cout << "The deque is empty." << endl;
else
cout << "The deque is not empty." << endl;
}
The deque is not empty.
end
Zwraca iterator, który adresuje lokalizację, która zakończyła się powodzeniem ostatniego elementu w elemecie deque.
const_iterator end() const;
iterator end();
Wartość zwracana
Iterator dostępu losowego, który adresuje lokalizację, która zakończyła się powodzeniem ostatniego elementu w elemecie deque. Jeśli wartość jest pusta deque , to deque::end == deque::begin.
Uwagi
end służy do testowania, czy iterator osiągnął koniec jego deque.
Przykład
// deque_end.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>
int main( )
{
using namespace std;
deque <int> c1;
deque <int>::iterator c1_Iter;
c1.push_back( 10 );
c1.push_back( 20 );
c1.push_back( 30 );
c1_Iter = c1.end( );
c1_Iter--;
cout << "The last integer of c1 is " << *c1_Iter << endl;
c1_Iter--;
*c1_Iter = 400;
cout << "The new next-to-last integer of c1 is " << *c1_Iter << endl;
// If a const iterator had been declared instead with the line:
// deque <int>::const_iterator c1_Iter;
// an error would have resulted when inserting the 400
cout << "The deque is now:";
for ( c1_Iter = c1.begin( ); c1_Iter != c1.end( ); c1_Iter++ )
cout << " " << *c1_Iter;
}
The last integer of c1 is 30
The new next-to-last integer of c1 is 400
The deque is now: 10 400 30
erase
Usuwa element lub zakres elementów z deque określonych pozycji.
iterator erase(iterator _Where);
iterator erase(iterator first, iterator last);
Parametry
_Where
Pozycja elementu, który ma zostać usunięty z elementu deque.
first
Pozycja pierwszego elementu usuniętego z elementu deque.
last
Pozycja tuż poza ostatnim elementem usuniętym z elementu deque.
Wartość zwracana
Iterator dostępu losowego, który wyznacza pierwszy element pozostały poza usuniętymi elementami lub wskaźnik na końcu deque elementu , jeśli taki element nie istnieje.
Uwagi
erase nigdy nie zgłasza wyjątku.
Przykład
// deque_erase.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>
int main( )
{
using namespace std;
deque <int> c1;
deque <int>::iterator Iter;
c1.push_back( 10 );
c1.push_back( 20 );
c1.push_back( 30 );
c1.push_back( 40 );
c1.push_back( 50 );
cout << "The initial deque is: ";
for ( Iter = c1.begin( ); Iter != c1.end( ); Iter++ )
cout << *Iter << " ";
cout << endl;
c1.erase( c1.begin( ) );
cout << "After erasing the first element, the deque becomes: ";
for ( Iter = c1.begin( ); Iter != c1.end( ); Iter++ )
cout << *Iter << " ";
cout << endl;
Iter = c1.begin( );
Iter++;
c1.erase( Iter, c1.end( ) );
cout << "After erasing all elements but the first, deque becomes: ";
for ( Iter = c1.begin( ); Iter != c1.end( ); Iter++ )
cout << *Iter << " ";
cout << endl;
}
The initial deque is: 10 20 30 40 50
After erasing the first element, the deque becomes: 20 30 40 50
After erasing all elements but the first, deque becomes: 20
front
Zwraca odwołanie do pierwszego elementu w elemencie deque.
reference front();
const_reference front() const;
Wartość zwracana
deque Jeśli element jest pusty, zwracanie jest niezdefiniowane.
Uwagi
Jeśli zwracana wartość front elementu jest przypisana do const_referenceobiektu , deque nie można zmodyfikować obiektu. Jeśli wartość zwracana front obiektu jest przypisana do referenceobiektu , deque można go zmodyfikować.
Podczas kompilowania przy użyciu _ITERATOR_DEBUG_LEVEL wartości zdefiniowanej jako 1 lub 2 wystąpi błąd środowiska uruchomieniowego, jeśli spróbujesz uzyskać dostęp do elementu w pustym dequeelemecie . Aby uzyskać więcej informacji, zobacz Sprawdzone iteratory .
Przykład
// deque_front.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>
int main( )
{
using namespace std;
deque <int> c1;
c1.push_back( 10 );
c1.push_back( 11 );
int& i = c1.front( );
const int& ii = c1.front( );
cout << "The first integer of c1 is " << i << endl;
i++;
cout << "The second integer of c1 is " << ii << endl;
}
The first integer of c1 is 10
The second integer of c1 is 11
get_allocator
Zwraca kopię obiektu alokatora używanego do konstruowania obiektu deque.
Allocator get_allocator() const;
Wartość zwracana
Alokator używany przez element deque.
Uwagi
Alokatory dla deque klasy określają sposób zarządzania magazynem przez klasę. Domyślne alokatory dostarczane z klasami kontenerów biblioteki standardowej języka C++ są wystarczające dla większości potrzeb programistycznych. Pisanie i używanie własnej klasy alokatora jest zaawansowanym tematem języka C++.
Przykład
// deque_get_allocator.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>
int main( )
{
using namespace std;
// The following lines declare objects that use the default allocator.
deque <int> c1;
deque <int, allocator<int> > c2 = deque <int, allocator<int> >( allocator<int>( ) );
// c3 will use the same allocator class as c1
deque <int> c3( c1.get_allocator( ) );
deque <int>::allocator_type xlst = c1.get_allocator( );
// You can now call functions on the allocator class used by c1
}
insert
Wstawia element lub kilka elementów lub zakres elementów do deque określonego położenia.
iterator insert(
const_iterator Where,
const Type& Val);
iterator insert(
const_iterator Where,
Type&& Val);
void insert(
iterator Where,
size_type Count,
const Type& Val);
template <class InputIterator>
void insert(
iterator Where,
InputIterator First,
InputIterator Last);
iterator insert(
iterator Where,initializer_list<Type>
IList);
Parametry
Where
Pozycja w miejscu docelowym deque , w którym wstawiono pierwszy element.
Val
Wartość elementu wstawionego do elementu deque.
Count
Liczba elementów wstawionych do elementu deque.
First
Pozycja pierwszego elementu w zakresie elementów w argumencie deque do skopiowania.
Last
Pozycja pierwszego elementu poza zakresem elementów w argumencie deque do skopiowania.
IList
initializer_list Elementy do wstawienia.
Wartość zwracana
Pierwsze dwie funkcje wstawiania zwracają iterator wskazujący położenie, w którym nowy element został wstawiony do elementu deque.
Uwagi
Każda operacja wstawiania może być kosztowna.
iterator
Typ, który udostępnia iterator dostępu losowego, który może odczytywać lub modyfikować dowolny element w obiekcie deque.
typedef implementation-defined iterator;
Uwagi
iterator Typ może służyć do modyfikowania wartości elementu.
Przykład
Zobacz przykład dla elementu begin.
max_size
Zwraca maksymalną długość obiektu deque.
size_type max_size() const;
Wartość zwracana
Maksymalna możliwa długość obiektu deque.
Przykład
// deque_max_size.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>
int main( )
{
using namespace std;
deque <int> c1;
deque <int>::size_type i;
i = c1.max_size( );
cout << "The maximum possible length of the deque is " << i << "." << endl;
}
operator[]
Zwraca odwołanie do deque elementu w określonej pozycji.
reference operator[](size_type pos);
const_reference operator[](size_type pos) const;
Parametry
pos
Położenie deque elementu do przywołowania.
Wartość zwracana
Odwołanie do elementu, którego pozycja jest określona w argumencie. Jeśli określona pozycja jest większa niż rozmiar dequeelementu , wynik jest niezdefiniowany.
Uwagi
Jeśli zwracana wartość operator[] elementu jest przypisana do const_referenceobiektu , deque nie można zmodyfikować obiektu. Jeśli wartość zwracana operator[] obiektu jest przypisana do referenceobiektu , deque można go zmodyfikować.
Podczas kompilacji przy użyciu _ITERATOR_DEBUG_LEVEL zdefiniowanej jako 1 lub 2 wystąpi błąd środowiska uruchomieniowego, jeśli spróbujesz uzyskać dostęp do elementu poza granicami deque. Aby uzyskać więcej informacji, zobacz Sprawdzone iteratory .
Przykład
// deque_op_ref.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>
int main( )
{
using namespace std;
deque <int> c1;
c1.push_back( 10 );
c1.push_back( 20 );
cout << "The first integer of c1 is " << c1[0] << endl;
int& i = c1[1];
cout << "The second integer of c1 is " << i << endl;
}
The first integer of c1 is 10
The second integer of c1 is 20
operator=
Zastępuje elementy tego deque elementu przy użyciu elementów z innego dequeelementu .
deque& operator=(const deque& right);
deque& operator=(deque&& right);
Parametry
right
Element deque , który udostępnia nową zawartość.
Uwagi
Pierwsza przesłonięć elementy do tej deque wartości z right, źródła przypisania. Drugie zastąpienie przenosi elementy do tego deque elementu z right.
Elementy zawarte w tym deque przed wykonaniem operatora zostaną usunięte.
Przykład
// deque_operator_as.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>
using namespace std;
typedef deque<int> MyDeque;
template<typename MyDeque> struct S;
template<typename MyDeque> struct S<MyDeque&> {
static void show( MyDeque& d ) {
MyDeque::const_iterator iter;
for (iter = d.cbegin(); iter != d.cend(); iter++)
cout << *iter << " ";
cout << endl;
}
};
template<typename MyDeque> struct S<MyDeque&&> {
static void show( MyDeque&& d ) {
MyDeque::const_iterator iter;
for (iter = d.cbegin(); iter != d.cend(); iter++)
cout << *iter << " ";
cout << " via unnamed rvalue reference " << endl;
}
};
int main( )
{
MyDeque d1, d2;
d1.push_back(10);
d1.push_back(20);
d1.push_back(30);
d1.push_back(40);
d1.push_back(50);
cout << "d1 = " ;
S<MyDeque&>::show( d1 );
d2 = d1;
cout << "d2 = ";
S<MyDeque&>::show( d2 );
cout << " ";
S<MyDeque&&>::show ( move< MyDeque& > (d1) );
}
pointer
Dostarcza wskaźnik do elementu w elemecie deque.
typedef typename Allocator::pointer pointer;
Uwagi
pointer Typ może służyć do modyfikowania wartości elementu. Element iterator jest częściej używany do uzyskiwania deque dostępu do elementu.
pop_back
Usuwa element na końcu elementu deque.
void pop_back();
Uwagi
Ostatni element nie może być pusty.
pop_back nigdy nie zgłasza wyjątku.
Przykład
// deque_pop_back.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>
int main( )
{
using namespace std;
deque <int> c1;
c1.push_back( 1 );
c1.push_back( 2 );
cout << "The first element is: " << c1.front( ) << endl;
cout << "The last element is: " << c1.back( ) << endl;
c1.pop_back( );
cout << "After deleting the element at the end of the deque, the "
"last element is: " << c1.back( ) << endl;
}
The first element is: 1
The last element is: 2
After deleting the element at the end of the deque, the last element is: 1
pop_front
Usuwa element na początku elementu deque.
void pop_front();
Uwagi
Pierwszy element nie może być pusty.
pop_front nigdy nie zgłasza wyjątku.
Przykład
// deque_pop_front.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>
int main( )
{
using namespace std;
deque <int> c1;
c1.push_back( 1 );
c1.push_back( 2 );
cout << "The first element is: " << c1.front( ) << endl;
cout << "The second element is: " << c1.back( ) << endl;
c1.pop_front( );
cout << "After deleting the element at the beginning of the "
"deque, the first element is: " << c1.front( ) << endl;
}
The first element is: 1
The second element is: 2
After deleting the element at the beginning of the `deque`, the first element is: 2
push_back
Dodaje element na końcu elementu deque.
void push_back(const Type& val);
void push_back(Type&& val);
Parametry
val
Element dodany na końcu elementu deque.
Uwagi
Jeśli zgłaszany jest wyjątek, deque pozostaje pozostawiony bez myślenia, a wyjątek zostanie ponownie zwrócony.
push_front
Dodaje element na początku elementu deque.
void push_front(const Type& val);
void push_front(Type&& val);
Parametry
val
Element dodany na początku elementu deque.
Uwagi
Jeśli zgłaszany jest wyjątek, deque pozostaje pozostawiony bez myślenia, a wyjątek zostanie ponownie zwrócony.
Przykład
// deque_push_front.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>
#include <string>
int main( )
{
using namespace std;
deque <int> c1;
c1.push_front( 1 );
if ( c1.size( ) != 0 )
cout << "First element: " << c1.front( ) << endl;
c1.push_front( 2 );
if ( c1.size( ) != 0 )
cout << "New first element: " << c1.front( ) << endl;
// move initialize a deque of strings
deque <string> c2;
string str("a");
c2.push_front( move( str ) );
cout << "Moved first element: " << c2.front( ) << endl;
}
First element: 1
New first element: 2
Moved first element: a
rbegin
Zwraca iterator do pierwszego elementu w odwróconym dequeobiekcie .
const_reverse_iterator rbegin() const;
reverse_iterator rbegin();
Wartość zwracana
Odwrotny iterator dostępu losowego odnoszący się do pierwszego elementu w odwróconym deque lub odnoszącym się do tego, co było ostatnim elementem w niewróceniu deque.
Uwagi
rbegin jest używany z odwróconym deque elementem, tak jak begin jest używany z elementem deque.
Jeśli zwracana wartość rbegin elementu jest przypisana do const_reverse_iteratorobiektu , deque nie można zmodyfikować obiektu. Jeśli wartość zwracana rbegin obiektu jest przypisana do reverse_iteratorobiektu , deque można go zmodyfikować.
rbegin może służyć do iterowania przez deque tyły.
Przykład
// deque_rbegin.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>
int main( )
{
using namespace std;
deque <int> c1;
deque <int>::iterator c1_Iter;
deque <int>::reverse_iterator c1_rIter;
// If the following line had replaced the line above, an error
// would have resulted in the line modifying an element
// (commented below) because the iterator would have been const
// deque <int>::const_reverse_iterator c1_rIter;
c1.push_back( 10 );
c1.push_back( 20 );
c1.push_back( 30 );
c1_rIter = c1.rbegin( );
cout << "Last element in the deque is " << *c1_rIter << "." << endl;
cout << "The deque contains the elements: ";
for ( c1_Iter = c1.begin( ); c1_Iter != c1.end( ); c1_Iter++ )
cout << *c1_Iter << " ";
cout << "in that order.";
cout << endl;
// rbegin can be used to iterate through a deque in reverse order
cout << "The reversed deque is: ";
for ( c1_rIter = c1.rbegin( ); c1_rIter != c1.rend( ); c1_rIter++ )
cout << *c1_rIter << " ";
cout << endl;
c1_rIter = c1.rbegin( );
*c1_rIter = 40; // This would have caused an error if a
// const_reverse iterator had been declared as
// noted above
cout << "Last element in deque is now " << *c1_rIter << "." << endl;
}
Last element in the deque is 30.
The deque contains the elements: 10 20 30 in that order.
The reversed deque is: 30 20 10
Last element in deque is now 40.
reference
Typ, który zawiera odwołanie do elementu przechowywanego w obiekcie deque.
typedef typename Allocator::reference reference;
Przykład
// deque_reference.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>
int main( )
{
using namespace std;
deque <int> c1;
c1.push_back( 10 );
c1.push_back( 20 );
const int &i = c1.front( );
int &j = c1.back( );
cout << "The first element is " << i << endl;
cout << "The second element is " << j << endl;
}
The first element is 10
The second element is 20
rend
Zwraca iterator, który adresuje lokalizację, która zakończyła się powodzeniem ostatniego elementu w odwróconym elemecie deque.
const_reverse_iterator rend() const;
reverse_iterator rend();
Wartość zwracana
Iterator odwrotnego dostępu losowego, który adresuje lokalizację, która zakończyła się powodzeniem ostatniego elementu w odwróconym deque elemecie (lokalizacja, która poprzedzała pierwszy element w niewróconym elemecie deque).
Uwagi
rend jest używany z odwróconym deque elementem, tak jak end jest używany z elementem deque.
Jeśli zwracana wartość rend elementu jest przypisana do const_reverse_iteratorobiektu , deque nie można zmodyfikować obiektu. Jeśli wartość zwracana rend obiektu jest przypisana do reverse_iteratorobiektu , deque można go zmodyfikować.
rend można użyć do sprawdzenia, czy iterator odwrotny osiągnął koniec jego deque.
Wartość zwracana przez rend nie powinna być wyłuszczone.
Przykład
// deque_rend.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>
int main( )
{
using namespace std;
deque <int> c1;
deque <int>::iterator c1_Iter;
deque <int>::reverse_iterator c1_rIter;
// If the following line had replaced the line above, an error
// would have resulted in the line modifying an element
// (commented below) because the iterator would have been const
// deque <int>::const_reverse_iterator c1_rIter;
c1.push_back( 10 );
c1.push_back( 20 );
c1.push_back( 30 );
c1_rIter = c1.rend( );
c1_rIter --; // Decrementing a reverse iterator moves it forward
// in the deque (to point to the first element here)
cout << "The first element in the deque is: " << *c1_rIter << endl;
cout << "The deque is: ";
for ( c1_Iter = c1.begin( ); c1_Iter != c1.end( ); c1_Iter++ )
cout << *c1_Iter << " ";
cout << endl;
// rend can be used to test if an iteration is through all of
// the elements of a reversed deque
cout << "The reversed deque is: ";
for ( c1_rIter = c1.rbegin( ); c1_rIter != c1.rend( ); c1_rIter++ )
cout << *c1_rIter << " ";
cout << endl;
c1_rIter = c1.rend( );
c1_rIter--; // Decrementing the reverse iterator moves it backward
// in the reversed deque (to the last element here)
*c1_rIter = 40; // This modification of the last element would
// have caused an error if a const_reverse
// iterator had been declared (as noted above)
cout << "The modified reversed deque is: ";
for ( c1_rIter = c1.rbegin( ); c1_rIter != c1.rend( ); c1_rIter++ )
cout << *c1_rIter << " ";
cout << endl;
}
The first element in the deque is: 10
The deque is: 10 20 30
The reversed deque is: 30 20 10
The modified reversed deque is: 30 20 40
resize
Określa nowy rozmiar elementu deque.
void resize(size_type _Newsize);
void resize(size_type _Newsize, Type val);
Parametry
_Newsize
Nowy rozmiar obiektu deque.
val
Wartość nowych elementów, które mają zostać dodane do deque elementu , jeśli nowy rozmiar jest większy niż rozmiar oryginalny. Jeśli wartość zostanie pominięta, nowe elementy zostaną przypisane do wartości domyślnej klasy.
Uwagi
Jeśli wartość parametru jest mniejsza niż deque, elementy są dodawane do size elementu , dopóki nie osiągnie rozmiaru _Newsize.deque_Newsize
Jeśli wartość parametru dequesize jest większa niż _Newsize, elementy znajdujące się najbliżej końca deque obiektu zostaną usunięte deque do momentu osiągnięcia rozmiaru _Newsize.
Jeśli obecny rozmiar obiektu deque jest taki sam jak _Newsize, nie zostanie podjęta żadna akcja.
size odzwierciedla bieżący rozmiar elementu deque.
Przykład
// deque_resize.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>
int main( )
{
using namespace std;
deque <int> c1;
c1.push_back( 10 );
c1.push_back( 20 );
c1.push_back( 30 );
c1.resize( 4,40 );
cout << "The size of c1 is: " << c1.size( ) << endl;
cout << "The value of the last element is " << c1.back( ) << endl;
c1.resize( 5 );
cout << "The size of c1 is now: " << c1.size( ) << endl;
cout << "The value of the last element is now " << c1.back( ) << endl;
c1.resize( 2 );
cout << "The reduced size of c1 is: " << c1.size( ) << endl;
cout << "The value of the last element is now " << c1.back( ) << endl;
}
The size of c1 is: 4
The value of the last element is 40
The size of c1 is now: 5
The value of the last element is now 0
The reduced size of c1 is: 2
The value of the last element is now 20
reverse_iterator
Typ, który udostępnia iterator dostępu losowego, który może odczytywać lub modyfikować element w odwróconym dequeobiekcie .
typedef std::reverse_iterator<iterator> reverse_iterator;
Uwagi
Typ reverse_iterator jest używany do iterowania przez element deque.
Przykład
Zobacz przykład rbegin.
shrink_to_fit
Odrzuca nadmiarową pojemność.
void shrink_to_fit();
Uwagi
Nie ma przenośnego sposobu określenia, czy shrink_to_fit zmniejsza ilość miejsca używanego przez program deque.
Przykład
// deque_shrink_to_fit.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>
int main( )
{
using namespace std;
deque <int> v1;
//deque <int>::iterator Iter;
v1.push_back( 1 );
v1.push_back( 2 );
cout << "Current size of v1 = "
<< v1.size( ) << endl;
v1.shrink_to_fit();
cout << "Current size of v1 = "
<< v1.size( ) << endl;
}
Current size of v1 = 1
Current size of v1 = 1
size
Zwraca liczbę elementów w elem.deque
size_type size() const;
Wartość zwracana
Bieżąca długość obiektu deque.
Przykład
// deque_size.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>
int main( )
{
using namespace std;
deque <int> c1;
deque <int>::size_type i;
c1.push_back( 1 );
i = c1.size( );
cout << "The deque length is " << i << "." << endl;
c1.push_back( 2 );
i = c1.size( );
cout << "The deque length is now " << i << "." << endl;
}
The deque length is 1.
The deque length is now 2.
size_type
Typ, który zlicza liczbę elementów w obiekcie deque.
typedef typename Allocator::size_type size_type;
Przykład
Zobacz przykład dla elementu size.
swap
Wymienia elementy dwóch deques.
void swap(deque<Type, Allocator>& right);
friend void swap(deque<Type, Allocator>& left, deque<Type, Allocator>& right) template <class Type, class Allocator>
void swap(deque<Type, Allocator>& left, deque<Type, Allocator>& right);
Parametry
right
Podanie deque elementów do zamiany lub deque elementów, których elementy mają być wymieniane z elementami dequeleft.
left
Element, deque którego elementy mają być wymieniane z elementami dequeright.
Przykład
// deque_swap.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>
int main( )
{
using namespace std;
deque <int> c1, c2, c3;
deque <int>::iterator c1_Iter;
c1.push_back( 1 );
c1.push_back( 2 );
c1.push_back( 3 );
c2.push_back( 10 );
c2.push_back( 20 );
c3.push_back( 100 );
cout << "The original deque c1 is:";
for ( c1_Iter = c1.begin( ); c1_Iter != c1.end( ); c1_Iter++ )
cout << " " << *c1_Iter;
cout << endl;
c1.swap( c2 );
cout << "After swapping with c2, deque c1 is:";
for ( c1_Iter = c1.begin( ); c1_Iter != c1.end( ); c1_Iter++ )
cout << " " << *c1_Iter;
cout << endl;
swap( c1,c3 );
cout << "After swapping with c3, deque c1 is:";
for ( c1_Iter = c1.begin( ); c1_Iter != c1.end( ); c1_Iter++ )
cout << " " << *c1_Iter;
cout << endl;
swap<>(c1, c2);
cout << "After swapping with c2, deque c1 is:";
for ( c1_Iter = c1.begin( ); c1_Iter != c1.end( ); c1_Iter++ )
cout << " " << *c1_Iter;
cout << endl;
}
The original deque c1 is: 1 2 3
After swapping with c2, deque c1 is: 10 20
After swapping with c3, deque c1 is: 100
After swapping with c2, deque c1 is: 1 2 3
value_type
Typ reprezentujący typ danych przechowywany w obiekcie deque.
typedef typename Allocator::value_type value_type;
Uwagi
value_type jest synonimem parametru Typeszablonu .
Przykład
// deque_value_type.cpp
// compile with: /EHsc
#include <deque>
#include <iostream>
int main( )
{
using namespace std;
deque<int>::value_type AnInt;
AnInt = 44;
cout << AnInt << endl;
}
44
Zobacz też
Bezpieczeństwo wątku w standardowej bibliotece C++
Dokumentacja standardowej biblioteki C++