Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ordnet Elemente eines angegebenen Typs in einer linearen Anordnung an, und aktiviert, wie ein Vektor, schnellen zufälligen Zugriff auf jedes Element sowie effizientes Einfügen und Löschen auf der Rückseite des Containers. Im Gegensatz zu einem Vektor, unterstützt die deque-Klasse allerdings auch das effiziente Einfügen und Löschen im Vordergrund des Containers.
Syntax
template <class Type, class Allocator = allocator<Type>>
class deque;
Parameter
Type
Der in deque zu speichernde Elementdatentyp.
Allocator
Der Typ, der das gespeicherte Allocatorobjekt darstellt, das Details zur dequeZuordnung und Zuordnung des Speichers kapselt. Dieses Argument ist optional, und der Standardwert ist allocator<Type>.
Hinweise
Die Auswahl des Containertyps sollte im Allgemeinen auf Grundlage des für die Anwendung erforderlichen Suchen und Einfügetyps erfolgen.
Vectors sollte der bevorzugte Container für die Verwaltung einer Sequenz sein, wenn der zufällige Zugriff auf jedes Element zu einem Premium-Element erfolgt und Einfügungen oder Löschungen von Elementen nur am Ende einer Sequenz erforderlich sind. Die Leistung des list-Containers ist optimal, wenn Elemente konstant an jeder Stelle innerhalb der Sequenz effizient eingefügt und gelöscht werden können. Solche Vorgänge in der Mitte der Sequenz benötigen Elementkopien und -Zuweisungen, die zur Anzahl von Elementen in der Sequenz proportional sind (lineare Zeit).
Deque Die Neuverteilung tritt auf, wenn eine Memberfunktion Elemente der Sequenz einfügen oder löschen muss:
Wenn ein Element in eine leere Sequenz eingefügt wird oder ein Element gelöscht wird, um eine leere Sequenz zu verlassen, werden iteratoren früher zurückgegeben
beginundendungültig.Wenn ein Element an der ersten Position des
dequeElements eingefügt wird, werden alle Iteratoren, aber keine Verweise, die vorhandene Elemente kennzeichnen, ungültig.Wenn am Ende des
dequeElements ein Element eingefügt wird,endwerden alle Iteratoren, aber keine Verweise, die vorhandene Elemente kennzeichnen, ungültig.Wenn ein Element am Anfang des
dequeElements gelöscht wird, werden nur dieses Iterator und Verweise auf das gelöschte Element ungültig.Wenn das letzte Element vom Ende des
dequeElements gelöscht wird, wird nur dieses Iterator auf das endgültige Element und Verweise auf das gelöschte Element ungültig.
Andernfalls werden alle Iteratoren und Verweise durch das Einfügen und Löschen eines Elements und ungültig.
Member
Konstruktoren
| Name | Beschreibung |
|---|---|
deque |
Erstellt ein Objekt vom Typ deque. Es werden mehrere Konstruktoren bereitgestellt, um den Inhalt des Neuen deque auf unterschiedliche Weise einzurichten: leer; geladen mit einer bestimmten Anzahl leerer Elemente; Inhalte, die aus einem anderen dequeverschoben oder kopiert wurden; Inhalte, die mit einem Iterator kopiert oder verschoben wurden, und ein Element, das in die dequecount Zeiten kopiert wurde. Einige der Konstruktoren ermöglichen die Verwendung eines benutzerdefinierten allocator zum Erstellen von Elementen. |
TypeDefs
| Name | Beschreibung |
|---|---|
allocator_type |
Ein Typ, der die allocator-Klassentyp für das deque-Objekt darstellt. |
const_iterator |
Ein Typ, der einen Iterator mit zufälligem Zugriff bereitstellt, mit dem auf Elemente in der deque als const zugegriffen, und mit dem diese Elemente gelesen werden können. |
const_pointer |
Ein Typ, der einen Zeiger auf ein Element in einem deque As constbereitstellt. |
const_reference |
Ein Typ, der einen Verweis auf ein Element in einer deque zum Lesen und anderen Vorgängen als const. |
const_reverse_iterator |
Ein Typ, der einen Iterator mit zufälligem Zugriff bereitstellt, mit dem auf Elemente in der deque als const zugegriffen, und mit dem diese Elemente gelesen werden können. Dies deque wird umgekehrt angezeigt. Weitere Informationen finden Sie unter reverse_iterator "Klasse" |
difference_type |
Ein Typ, der den Unterschied zwischen zwei Iteratoren mit zufälligem Zugriff, die auf Elemente in derselben deque verweisen, bereitstellt. |
iterator |
Ein Typ, der einen Iterator mit zufälligem Zugriff bereitstellt, mit dem jedes Element in einer deque gelesen oder geändert werden kann. |
pointer |
Ein Typ, der einen Zeiger auf ein Element in einer deque bereitstellt. |
reference |
Ein Typ, der einen Verweis auf ein in einer deque gespeichertes Element bereitstellt. |
reverse_iterator |
Ein Typ, der einen Iterator mit zufälligem Zugriff bereitstellt, mit dem ein Element in einer deque gelesen oder geändert werden kann. Die deque Wird in umgekehrter Reihenfolge angezeigt. |
size_type |
Ein Typ, der die Anzahl von Elementen in einer deque zählt. |
value_type |
Ein Typ, der den in einer deque gespeicherten Datentyp darstellt. |
Funktionen
| Name | Beschreibung |
|---|---|
assign |
Löscht Elemente aus einer deque und kopiert eine neue Sequenz von Elementen in die Ziel-deque. |
at |
Gibt einen Verweis auf das Element an einer angegebenen Position in der deque zurück. |
back |
Gibt einen Verweis auf das letzte Element der deque zurück. |
begin |
Gibt ein Iterator mit zufälligem Zugriff zurück, der das erste Element in der deque adressiert. |
cbegin |
Gibt einen const Iterator an das erste Element in der .deque |
cend |
Gibt einen const-Iterator mit zufälligem Zugriff zurück, der auf eine Position unmittelbar nach dem Ende der deque verweist. |
clear |
Löscht alle Elemente einer deque auf. |
crbegin |
Gibt einen Iterator für zufälligen Zugriff const auf das erste Element in umgekehrter deque Reihenfolge zurück. |
crend |
Gibt einen Iterator für zufälligen Zugriff const auf das erste Element in umgekehrter deque Reihenfolge zurück. |
emplace |
Fügt ein direkt konstruiertes Element an einer angegebenen Position in die deque ein. |
emplace_back |
Fügt ein direkt konstruiertes Element am Ende der deque ein. |
emplace_front |
Fügt ein direkt konstruiertes Element am Anfang der deque ein. |
empty |
Gibt true zurück, wenn deque keine Elemente enthält, und gibt false zurück, wenn mindestens ein Element enthält. |
end |
Gibt einen Iterator mit zufälligem Zugriff zurück, der auf eine Position unmittelbar nach dem Ende der deque verweist. |
erase |
Entfernt ein Element oder eine Reihe von Elementen in einer deque aus angegebenen Speicherorten. |
front |
Gibt einen Verweis auf das erste Element in einer deque zurück. |
get_allocator |
Gibt eine Kopie des zum Erstellen der allocator verwendeten deque-Objekts zurück. |
insert |
Fügt ein Element, mehrere Elemente oder einen Reihe von Elementen an einer angegebenen Position in die deque ein. |
max_size |
Gibt die mögliche Maximallänge der deque zurück. |
pop_back |
Löscht das Element am Ende der deque. |
pop_front |
Löscht das Element am Anfang der deque. |
push_back |
Fügt am Ende der deque ein Element hinzu. |
push_front |
Fügt am Anfang der deque ein Element hinzu. |
rbegin |
Gibt dem ersten Element einen Iterator mit zufälligem Zugriff in umgekehrter deque zurück. |
rend |
Gibt einen Iterator mit zufälligem Zugriff zurück, der grade über das letzte Element in einer umgekehrten deque zeigt. |
resize |
Gibt eine neue Größe für eine deque an. |
shrink_to_fit |
Verwirft Überkapazität. |
size |
Gibt die Anzahl von Elementen in der deque zurück. |
swap |
Tauscht die Elemente zweier dequen. |
Operatoren
| Name | Beschreibung |
|---|---|
operator[] |
Gibt einen Verweis auf das deque-Element an einer angegebenen Position zurück. |
operator= |
Ersetzt die Elemente der deque mit einer Kopie einer anderen deque. |
allocator_type
Ein Typ, der die Allocator-Klasse für das deque Objekt darstellt.
typedef Allocator allocator_type;
Hinweise
allocator_type ist ein Synonym für den Vorlagenparameter Allocator.
Beispiel
Ein Beispiel hierfür finden Sie unter get_allocator.
assign
Löscht Elemente aus einem deque Element und kopiert eine neue Gruppe von Elementen in das Ziel deque.
template <class InputIterator>
void assign(
InputIterator First,
InputIterator Last);
void assign(
size_type Count,
const Type& Val);
void assign(initializer_list<Type> IList);
Parameter
First
Position des ersten Elements im Bereich der Elemente, die aus dem Argument dequekopiert werden sollen.
Last
Position des ersten Elements über den Bereich der Elemente hinaus, die aus dem Argument dequekopiert werden sollen.
Count
Die Anzahl der Kopien eines Elements, das in das dequeElement eingefügt wird.
Val
Der Wert des Elements, das in den deque eingefügt wird.
IList
Das initializer_list in die deque.
Hinweise
Nachdem vorhandene Elemente im Ziel deque gelöscht wurden, assign fügt entweder einen angegebenen Elementbereich aus dem Original deque oder von einem anderen deque in das Ziel dequeein, oder fügt Kopien eines neuen Elements eines angegebenen Werts in das Ziel dequeein.
Beispiel
// 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
Gibt einen Verweis auf das Element an einer angegebenen Position in der deque zurück.
reference at(size_type pos);
const_reference at(size_type pos) const;
Parameter
pos
Die tiefgestellte (oder Positionsnummer) des Elements, auf das dequeverwiesen werden soll.
Rückgabewert
Wenn pos die Größe des dequeWerts größer ist, at wird eine Ausnahme ausgelöst.
Hinweise
Wenn der Rückgabewert at eines const_referenceObjekts zugewiesen ist, kann das deque Objekt nicht geändert werden. Wenn der Rückgabewert at eines referenceObjekts zugewiesen ist, kann das deque Objekt geändert werden.
Beispiel
// 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
Gibt einen Verweis auf das letzte Element der deque zurück.
reference back();
const_reference back() const;
Rückgabewert
Das letzte Element der deque. Wenn dies deque leer ist, ist der Rückgabewert nicht definiert.
Hinweise
Wenn der Rückgabewert back eines const_referenceObjekts zugewiesen ist, kann das deque Objekt nicht geändert werden. Wenn der Rückgabewert back eines referenceObjekts zugewiesen ist, kann das deque Objekt geändert werden.
Bei der Kompilierung mithilfe _ITERATOR_DEBUG_LEVEL von 1 oder 2 tritt ein Laufzeitfehler auf, wenn Sie versuchen, auf ein Element in einem leeren dequeElement zuzugreifen. Weitere Informationen finden Sie unter Checked Iterators .
Beispiel
// 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
Gibt ein Iterator zurück, der das erste Element im deque-Element adressiert.
const_iterator begin() const;
iterator begin();
Rückgabewert
Ein Iterator mit direktem Zugriff, der das erste Element im deque adressiert oder auf die Position zeigt, der auf einen leeren deque folgt.
Hinweise
Wenn der Rückgabewert begin eines const_iteratorObjekts zugewiesen ist, kann das deque Objekt nicht geändert werden. Wenn der Rückgabewert begin eines iteratorObjekts zugewiesen ist, kann das deque Objekt geändert werden.
Beispiel
// 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
Gibt einen const-Iterator zurück, mit dem das erste Element im Bereich behandelt wird.
const_iterator cbegin() const;
Rückgabewert
Ein const-Random-Access-Iterator, der auf das erste Element des Bereichs zeigt oder die Position direkt hinter dem Ende eines leeren Bereichs (für einen leeren Bereich gilt cbegin() == cend()).
Hinweise
Mit dem Rückgabewert von cbegin, die Elemente im Bereich können nicht geändert werden.
Sie können diese Memberfunktion anstelle der begin()-Memberfunktion verwenden, um sicherzustellen, dass der Rückgabewert const_iterator ist. In der Regel wird sie zusammen mit dem auto Stichwort "Typabzug" verwendet, wie im folgenden Beispiel gezeigt. Im folgenden Beispiel ist Container ein beliebiger änderbarer (Nicht-const-)Container, der begin() und cbegin() unterstützt.
auto i1 = Container.begin();
// i1 is Container<T>::iterator
auto i2 = Container.cbegin();
// i2 is Container<T>::const_iterator
cend
Gibt einen const-Iterator zurück, der den Speicherort adressiert, der dem letzten Element eines Bereichs unmittelbar nachfolgt.
const_iterator cend() const;
Rückgabewert
Ein Random-Access-Iterator, der auf eine Position unmittelbar nach dem Ende des Bereichs verweist.
Hinweise
cend wird verwendet, um zu testen, ob ein Iterator das Ende seines Bereichs übergeben hat.
Sie können diese Memberfunktion anstelle der end()-Memberfunktion verwenden, um sicherzustellen, dass der Rückgabewert const_iterator ist. In der Regel wird sie zusammen mit dem auto Stichwort "Typabzug" verwendet, wie im folgenden Beispiel gezeigt. Im folgenden Beispiel ist Container ein beliebiger änderbarer (Nicht-const-)Container, der end() und cend() unterstützt.
auto i1 = Container.end();
// i1 is Container<T>::iterator
auto i2 = Container.cend();
// i2 is Container<T>::const_iterator
Der zurückgegebene cend Wert sollte nicht abgeleitet werden.
clear
Löscht alle Elemente einer deque auf.
void clear();
Beispiel
// 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
Ein Typ, der einen Iterator mit wahlfreiem Zugriff bereitstellt, der auf ein const Element in der Datei dequezugreifen und diese lesen kann.
typedef implementation-defined const_iterator;
Hinweise
Ein Typ const_iterator kann nicht verwendet werden, um den Wert eines Elements zu ändern.
Beispiel
Ein Beispiel hierfür finden Sie unter back.
const_pointer
Stellt einen Zeiger auf ein const Element in einem deque.
typedef typename Allocator::const_pointer const_pointer;
Hinweise
Ein Typ const_pointer kann nicht verwendet werden, um den Wert eines Elements zu ändern. Ein iterator Element wird häufiger verwendet, um auf ein deque Element zuzugreifen.
const_reference
Ein Typ, der einen Verweis auf ein const-Element bereitstellt, das in einem deque-Element zum Lesen und Ausführen von const-Vorgängen gespeichert ist.
typedef typename Allocator::const_reference const_reference;
Hinweise
Ein Typ const_reference kann nicht verwendet werden, um den Wert eines Elements zu ändern.
Beispiel
// 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
Ein Typ, der einen Iterator mit wahlfreiem Zugriff bereitstellt, der alle const Elemente in der dequeDatei lesen kann.
typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
Hinweise
Ein Typ const_reverse_iterator kann den Wert eines Elements nicht ändern und wird zum Durchlaufen des deque umgekehrten Elements verwendet.
Beispiel
Ein Beispiel zum Deklarieren und Verwenden eines Iterators finden Sie im Beispiel rbegin .
crbegin
Gibt einen const Iterator an das erste Element in einem umgekehrten dequeElement zurück.
const_reverse_iterator crbegin() const;
Rückgabewert
Ein umgekehrter const Iterator für den zufälligen Zugriff, der das erste Element in einem umgekehrten deque Element adressiert oder angibt, was das letzte Element in der unreversierten deque.
Hinweise
Mit dem Rückgabewert des crbeginObjekts kann das deque Objekt nicht geändert werden.
Beispiel
// 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
Gibt einen const Iterator zurück, der die Position adressiert, die das letzte Element in einem umgekehrten Element erfolgreich war deque.
const_reverse_iterator crend() const;
Rückgabewert
Ein umgekehrter const Iterator für den zufälligen Zugriff, der die Position adressiert, die das letzte Element in einem umgekehrten deque Element erfolgreich war (die Position, die dem ersten Element in der nicht reversierten dequeSeite vorausging).
Hinweise
crend wird mit einem umgekehrten deque verwendet, genau wie array::cend bei einem deque.
Mit dem Rückgabewert ( crend entsprechend dekrementiert) kann das deque Objekt nicht geändert werden.
crend kann verwendet werden, um zu testen, ob das Ende der deque von einem umgekehrten Iterator erreicht wurde.
Der zurückgegebene crend Wert sollte nicht abgeleitet werden.
Beispiel
// 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
Erstellt eine deque bestimmte Größe oder mit Elementen eines bestimmten Werts oder mit einem bestimmten Zuweisungselement oder als Kopie aller oder eines Teils eines anderen dequeWerts.
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);
Parameter
Al
Die mit diesem Objekt zu verwendende Zuweisungsklasse.
Count
Die Anzahl der Elemente im konstruierten deque.
Val
Der Wert der Elemente im konstruierten deque.
Right
Das deque-Element, von dem das erstellte deque-Element eine Kopie sein soll.
First
Die Position des ersten Elements in dem zu kopierenden Elementbereich.
Last
Die Position des ersten Elements nach dem zu kopierenden Elementbereich.
IList
Das zu kopierende initializer_list.
Hinweise
Alle Konstruktoren speichern ein Allocator-Objekt (Al) und initialisieren die deque.
Die ersten beiden Konstruktoren geben eine leere Initiale dequean; die zweite gibt auch den zu verwendenden Allocatortyp (_Al) an.
Der dritte Konstruktor gibt eine Wiederholung einer angegebenen Anzahl (count) von Elementen des Standardwerts für die Klasse Type an.
Die vierten und fünften Konstruktoren geben eine Wiederholung von (Count) Elementen des Werts valan.
Der sechste Konstruktor gibt eine Kopie der dequeRight.
Der siebte und achte Konstruktor kopieren den Bereich [First, Last) eines deque.
Der siebte Konstruktor verschiebt den dequeRight.
Der achte Konstruktor kopiert den Inhalt eines initializer_list.
Keine der Konstruktoren führen Zwischenneuzuordnungen aus.
Beispiel
// 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
Ein Typ, der den Unterschied zwischen zwei Iteratoren, die auf Elemente innerhalb derselben deque verweisen, bereitstellt.
typedef typename Allocator::difference_type difference_type;
Hinweise
Ein difference_type kann auch als die Anzahl der Elemente zwischen zwei Zeigern beschrieben werden.
Beispiel
// 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
Fügt ein direkt konstruiertes Element an einer angegebenen Position in die deque ein.
iterator emplace(
const_iterator _Where,
Type&& val);
Parameter
_Where
Die Position, an der deque das erste Element eingefügt wird.
val
Der Wert des Elements, das in den deque eingefügt wird.
Rückgabewert
Die Funktion gibt einen Iterator zurück, der auf den Speicherort zeigt, an dem das neue Element in den deque eingefügt wurde.
Hinweise
Einfügevorgänge können sehr speicherintensiv sein. Eine Abhandlung zur Leistung von deque finden Sie unter deque.
Beispiel
// 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
Fügt ein direkt konstruiertes Element am Ende der deque ein.
void emplace_back(Type&& val);
Parameter
val
Das Element, das am Ende der deque hinzugefügt wird.
Beispiel
// 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
Fügt ein direkt konstruiertes Element am Ende der deque ein.
void emplace_front(Type&& val);
Parameter
val
Das Element, das am Anfang der deque.
Beispiel
// 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
Testet, ob ein deque-Element leer ist.
bool empty() const;
Rückgabewert
true wenn die deque leer ist; false wenn dies deque nicht leer ist.
Beispiel
// 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
Gibt einen Iterator zurück, der den Speicherort adressiert, der dem letzten Element einem deque-Element nachfolgt.
const_iterator end() const;
iterator end();
Rückgabewert
Ein Iterator mit wahlfreiem Zugriff, der den Speicherort adressiert, der das letzte Element in einem deque. Wenn die deque leer ist, gilt anschließend deque::end == deque::begin.
Hinweise
end wird verwendet, um zu testen, ob ein Iterator das Ende seines deque erreicht hat.
Beispiel
// 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
Entfernt ein Element oder eine Reihe von Elementen in einer deque aus angegebenen Speicherorten.
iterator erase(iterator _Where);
iterator erase(iterator first, iterator last);
Parameter
_Where
Die Position des Elements, das aus dem dequeElement entfernt werden soll.
first
Position des ersten Elements, das aus dem deque.
last
Position direkt über dem letzten Element entfernt aus dem deque.
Rückgabewert
Ein Iterator mit zufälligem Zugriff, der das erste Element angibt, das über alle entfernten Elemente hinausgeht, oder ein Zeiger auf das Ende des deque Elements, wenn kein solches Element vorhanden ist.
Hinweise
erase löst nie eine Ausnahme aus.
Beispiel
// 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
Gibt einen Verweis auf das erste Element in einer deque zurück.
reference front();
const_reference front() const;
Rückgabewert
Wenn dies deque leer ist, ist die Rückgabe nicht definiert.
Hinweise
Wenn der Rückgabewert front eines const_referenceObjekts zugewiesen ist, kann das deque Objekt nicht geändert werden. Wenn der Rückgabewert front eines referenceObjekts zugewiesen ist, kann das deque Objekt geändert werden.
Bei der Kompilierung mithilfe _ITERATOR_DEBUG_LEVEL von 1 oder 2 tritt ein Laufzeitfehler auf, wenn Sie versuchen, auf ein Element in einem leeren dequeElement zuzugreifen. Weitere Informationen finden Sie unter Checked Iterators .
Beispiel
// 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
Gibt eine Kopie des allocator -Objekts zurück, das zum Erstellen des dequeObjekts verwendet wird.
Allocator get_allocator() const;
Rückgabewert
Der von der dequeZuweisung verwendete Allokator .
Hinweise
Allocators für die deque Klasse geben an, wie die Klasse Speicher verwaltet. Für die meisten Programmieranforderungen reichen die standardmäßigen allocator-Objekte mit Container-Klassen der C++-Standardbibliothek aus. Schreiben und Verwenden Ihrer eigener Zuweisungsklasse ist ein C++ -Thema für Fortgeschrittene.
Beispiel
// 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
Fügt ein Element oder eine Reihe von Elementen oder einen Bereich von Elementen an der deque angegebenen Position ein.
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);
Parameter
Where
Die Position im Ziel deque , an der das erste Element eingefügt wird.
Val
Der Wert des Elements, das in den deque eingefügt wird.
Count
Die Anzahl der Elemente, die in die deque.
First
Die Position des ersten Elements im Bereich von Elementen im Argument deque , das kopiert werden soll.
Last
Die Position des ersten Elements über den Bereich von Elementen im Argument deque hinaus, das kopiert werden soll.
IList
Die initializer_list einzufügenden Elemente.
Rückgabewert
Die ersten beiden Einfügefunktionen geben einen Iterator zurück, der auf die Position zeigt, an der das neue Element in die dequeEinfügemarke eingefügt wurde.
Hinweise
Jeder Einfügevorgang kann ressourcenintensiv sein.
iterator
Ein Typ, der einen Iterator mit zufälligem Zugriff bereitstellt, mit dem jedes Element in einer deque gelesen oder geändert werden kann.
typedef implementation-defined iterator;
Hinweise
Ein Typ iterator kann verwendet werden, um den Wert eines Elements zu ändern.
Beispiel
Ein Beispiel hierfür finden Sie unter begin.
max_size
Gibt die Maximallänge der deque zurück.
size_type max_size() const;
Rückgabewert
Die maximal mögliche Länge der deque.
Beispiel
// 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[]
Gibt einen Verweis auf das deque-Element an einer angegebenen Position zurück.
reference operator[](size_type pos);
const_reference operator[](size_type pos) const;
Parameter
pos
Die Position des deque elements, auf das verwiesen werden soll.
Rückgabewert
Ein Verweis auf das Element, dessen Position im Argument angegeben wird. Wenn die angegebene Position größer als die Größe des dequeBereichs ist, ist das Ergebnis nicht definiert.
Hinweise
Wenn der Rückgabewert operator[] eines const_referenceObjekts zugewiesen ist, kann das deque Objekt nicht geändert werden. Wenn der Rückgabewert operator[] eines referenceObjekts zugewiesen ist, kann das deque Objekt geändert werden.
Bei der Kompilierung mithilfe von _ITERATOR_DEBUG_LEVEL 1 oder 2 tritt ein Laufzeitfehler auf, wenn Sie versuchen, auf ein Element außerhalb der Grenzen der .deque Weitere Informationen finden Sie unter Checked Iterators .
Beispiel
// 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=
Ersetzt die Elemente dieser deque Elemente mithilfe der Elemente aus einem anderen deque.
deque& operator=(const deque& right);
deque& operator=(deque&& right);
Parameter
right
Dies deque stellt den neuen Inhalt bereit.
Hinweise
Die erste Außerkraftsetzung kopiert Elemente in dequediese right aus , der Quelle der Zuordnung. Die zweite Außerkraftsetzung verschiebt Elemente von deque diesem Element.right
Elemente, die in diesem deque Element enthalten sind, bevor der Operator ausgeführt wird, werden entfernt.
Beispiel
// 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
Stellt einen Zeiger auf ein Element in einem deque.
typedef typename Allocator::pointer pointer;
Hinweise
Ein Typ pointer kann verwendet werden, um den Wert eines Elements zu ändern. Ein iterator Element wird häufiger verwendet, um auf ein deque Element zuzugreifen.
pop_back
Löscht das Element am Ende der .deque
void pop_back();
Hinweise
Das letzte Element darf nicht leer sein.
pop_back löst nie eine Ausnahme aus.
Beispiel
// 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
Löscht das Element am Anfang der deque.
void pop_front();
Hinweise
Das erste Element darf nicht leer sein.
pop_front löst nie eine Ausnahme aus.
Beispiel
// 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
Fügt am Ende der deque ein Element hinzu.
void push_back(const Type& val);
void push_back(Type&& val);
Parameter
val
Das Element, das am Ende der deque hinzugefügt wird.
Hinweise
Wenn eine Ausnahme ausgelöst wird, bleibt die deque unverändert, und die Ausnahme wird erneut ausgelöst.
push_front
Fügt am Anfang des dequeElements ein Element hinzu.
void push_front(const Type& val);
void push_front(Type&& val);
Parameter
val
Das Element, das am Anfang der deque.
Hinweise
Wenn eine Ausnahme ausgelöst wird, bleibt die deque unverändert, und die Ausnahme wird erneut ausgelöst.
Beispiel
// 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
Gibt einen Iterator an das erste Element in einer umgekehrten dequeZurück.
const_reverse_iterator rbegin() const;
reverse_iterator rbegin();
Rückgabewert
Ein umgekehrter Iterator für den zufälligen Zugriff, der das erste Element in einem umgekehrten deque Element adressiert oder angibt, was das letzte Element in der unreversierten deque.
Hinweise
rbegin wird mit einem umgekehrten deque verwendet, genau wie begin bei einem deque.
Wenn der Rückgabewert rbegin eines const_reverse_iteratorObjekts zugewiesen ist, kann das deque Objekt nicht geändert werden. Wenn der Rückgabewert rbegin eines reverse_iteratorObjekts zugewiesen ist, kann das deque Objekt geändert werden.
Mit rbegin kann ein deque rückwärts durchlaufen werden.
Beispiel
// 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
Ein Typ, der einen Verweis auf ein in einer deque gespeichertes Element bereitstellt.
typedef typename Allocator::reference reference;
Beispiel
// 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
Gibt einen Iterator zurück, der den Speicherort adressiert, der dem letzten Element eines umgekehrten deque-Elements nachfolgt.
const_reverse_iterator rend() const;
reverse_iterator rend();
Rückgabewert
Ein umgekehrter Iterator für den zufälligen Zugriff, der die Position adressiert, die das letzte Element in einem umgekehrten deque Element erfolgreich war (die Position, die dem ersten Element in der nicht reversierten dequeSeite vorausging).
Hinweise
rend wird mit einem umgekehrten deque verwendet, genau wie end bei einem deque.
Wenn der Rückgabewert rend eines const_reverse_iteratorObjekts zugewiesen ist, kann das deque Objekt nicht geändert werden. Wenn der Rückgabewert rend eines reverse_iteratorObjekts zugewiesen ist, kann das deque Objekt geändert werden.
rend kann verwendet werden, um zu testen, ob ein Umgekehrter Iterator das Ende des Iterators dequeerreicht hat.
Der zurückgegebene rend Wert sollte nicht abgeleitet werden.
Beispiel
// 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
Gibt eine neue Größe für eine deque an.
void resize(size_type _Newsize);
void resize(size_type _Newsize, Type val);
Parameter
_Newsize
Die neue Größe der deque.
val
Der Wert der neuen Elemente, die deque hinzugefügt werden sollen, wenn die neue Größe größer ist, wenn die ursprüngliche Größe größer ist. Wenn der Wert ausgelassen wird, werden dem Standardwert die neuen Elemente für die Klasse zugewiesen.
Hinweise
Wenn die dequeElemente kleiner als sizesind, werden Elemente der _Newsize Größe hinzugefügt, bis sie die Größe dequeerreicht._Newsize
Wenn die dequeElemente size größer als _Newsizesind, werden die Elemente, die am nächsten am Ende der deque Löschung liegen, gelöscht, bis die deque Größe _Newsizeerreicht ist.
Wenn die aktuelle Größe der deque Datei mit dem identisch _Newsizeist, wird keine Aktion ausgeführt.
size entspricht der aktuellen Größe der deque.
Beispiel
// 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
Ein Typ, der einen Iterator mit wahlfreiem Zugriff bereitstellt, der ein Element in einem umgekehrten dequeElement lesen oder ändern kann.
typedef std::reverse_iterator<iterator> reverse_iterator;
Hinweise
Ein Typ reverse_iterator wird verwendet, um die deque.
Beispiel
Ein Beispiel hierfür finden Sie unter rbegin.
shrink_to_fit
Verwirft Überkapazität.
void shrink_to_fit();
Hinweise
Es gibt keine tragbare Möglichkeit, festzustellen, ob shrink_to_fit der von einem deque.
Beispiel
// 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
Gibt die Anzahl von Elementen in der deque zurück.
size_type size() const;
Rückgabewert
Die aktuelle Länge des deque.
Beispiel
// 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
Ein Typ, der die Anzahl von Elementen in einer deque zählt.
typedef typename Allocator::size_type size_type;
Beispiel
Ein Beispiel hierfür finden Sie unter size.
swap
Tauscht die Elemente von zwei deque-Objekten aus.
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);
Parameter
right
Die deque Bereitstellung der zu tauschenden Elemente oder deren deque Elemente sollen mit denen des dequeleftTauschs ausgetauscht werden.
left
A deque , dessen Elemente mit denen der dequerightausgetauscht werden sollen.
Beispiel
// 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
Ein Typ, der den in einer deque gespeicherten Datentyp darstellt.
typedef typename Allocator::value_type value_type;
Hinweise
value_type ist ein Synonym für den Vorlagenparameter Type.
Beispiel
// 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
Siehe auch
Threadsicherheit in der C++-Standardbibliothek
C++-Standardbibliotheksreferenz