queue
Sınıf
Bazı temel kapsayıcı türleri için işlevsellik kısıtlaması sağlayan ve ön ve arka öğelere erişimi sınırlayan bir şablon kapsayıcı bağdaştırıcısı sınıfı. Öğeler arkaya eklenebilir veya önden kaldırılabilir ve öğelerinin queue
her iki ucunda da denetlenebilir.
Sözdizimi
template <class Type, class Container = deque <Type>>
class queue
Parametreler
Type
içinde queue
depolanacak öğe veri türü.
Container
uygulamak için kullanılan temel kapsayıcının queue
türü.
Açıklamalar
Bir queue
nesnenin ilk şablon parametresinde belirtilen sınıfın Type
öğeleri ile eş anlamlıdır ve ikinci şablon parametresi tarafından belirtilen temel kapsayıcı sınıfındaki Container
öğe türüyle value_type
eşleşmelidir. Type
atanabilir olmalıdır, böylece bu türdeki nesneleri kopyalamak ve bu türdeki değişkenlere değer atamak mümkündür.
dahil ve için queue
uygun temel kapsayıcı sınıfları veya , , push_back
back
ve pop_front
işlemlerini front
destekleyen başka bir sıralı list
kapsayıcı.deque
Temel alınan kapsayıcı sınıfı kapsayıcı bağdaştırıcısı içinde kapsüllenmiştir ve bu da yalnızca sıralı kapsayıcı üyesi işlevlerinin sınırlı kümesini ortak arabirim olarak kullanıma sunar.
Sınıfın queue
öğeleri eşitlik karşılaştırılabilirse ve yalnızca sınıfın Type
öğeleri karşılaştırılabilirse eşitlik karşılaştırılabilir ve yalnızca sınıfın Type
öğeleri daha az karşılaştırılabilirse karşılaştırılabilir.
C++ Standart Kitaplığı tarafından tanımlanan üç tür kapsayıcı bağdaştırıcısı vardır: stack
, queue
ve priority_queue
. Her biri, temel alınan bazı kapsayıcı sınıfının işlevselliğini standart bir veri yapısına hassas bir şekilde denetlenen bir arabirim sağlamak üzere kısıtlar.
stack
sınıfı, last-in, first-out (LIFO) veri yapısını destekler. Akılda tutulması gereken iyi bir analog plaka yığını olabilir. Öğeler (levhalar) yalnızca temel kapsayıcının sonundaki son öğe olan yığının en üstünden eklenebilir, incelenebilir veya kaldırılabilir. Yalnızca en üst öğeye erişme kısıtlaması, sınıfınıstack
kullanmanın nedenidir.queue
sınıfı, ilk giriş, ilk çıkış (FIFO) veri yapısını destekler. Akılda tutulması gereken iyi bir analog, banka veznesi için sıraya giren insanlar olabilir. Öğeler (kişiler) satırın arkasına eklenebilir ve satırın önünden kaldırılabilir. Bir hattın hem ön hem de arka kısmı incelenebilir. Yalnızca veback
öğelerine bu şekilde erişmefront
kısıtlaması, sınıfı kullanmanınqueue
nedenidir.sınıfı
priority_queue
öğelerini sıralar, böylece en büyük öğe her zaman en üst konumda olur. Bir öğenin eklenmesini ve üst öğenin incelenmesini ve kaldırılmasını destekler. Akılda tutulması gereken iyi bir analog, insanların yaşlarına, boylarına veya başka ölçütlere göre düzenlendikleri yerde sıraya girmiş olmasıdır.
Üyeler
Oluşturucular
Veri Akışı Adı | Açıklama |
---|---|
queue |
queue Boş veya bir temel kapsayıcı nesnesinin kopyası olan bir oluşturur. |
Tür tanımları
Veri Akışı Adı | Açıklama |
---|---|
container_type |
tarafından queue uyarlanacak temel kapsayıcıyı sağlayan bir tür. |
size_type |
içindeki öğe sayısını temsil eden işaretsiz bir queue tamsayı türü. |
value_type |
içinde öğe olarak depolanan nesne türünü temsil eden bir queue tür. |
İşlevler
Veri Akışı Adı | Açıklama |
---|---|
back |
öğesinin arkasında queue son ve en son eklenen öğeye başvuru döndürür. |
empty |
boş olup olmadığını sınar queue . |
front |
öğesinin önündeki queue ilk öğeye başvuru döndürür. |
pop |
öğesinin önünden queue kaldırır. |
push |
öğesinin arkasına queue bir öğe ekler. |
size |
içindeki queue öğe sayısını döndürür. |
back
öğesinin arkasında queue
son ve en son eklenen öğeye başvuru döndürür.
reference back();
const_reference back() const;
Dönüş Değeri
öğesinin queue
son öğesi. queue
boşsa, dönüş değeri tanımlanmamış olur.
Açıklamalar
değerinin dönüş değeri back
bir const_reference
queue
öğesine atanmışsa, nesnesi değiştirilemez. değerinin dönüş değeri back
bir reference
queue
öğesine atanmışsa, nesnesi değiştirilebilir.
1 veya 2 olarak tanımlanan kullanılarak _ITERATOR_DEBUG_LEVEL
derlendiğinde, boş queue
bir içindeki bir öğeye erişmeye çalışırsanız bir çalışma zamanı hatası oluşur. Daha fazla bilgi için bkz . İşaretli Yineleyiciler .
Örnek
// queue_back.cpp
// compile with: /EHsc
#include <queue>
#include <iostream>
int main( )
{
using namespace std;
queue <int> q1;
q1.push( 10 );
q1.push( 11 );
int& i = q1.back( );
const int& ii = q1.front( );
cout << "The integer at the back of queue q1 is " << i
<< "." << endl;
cout << "The integer at the front of queue q1 is " << ii
<< "." << endl;
}
container_type
Uyarlanacak temel kapsayıcıyı sağlayan bir tür.
typedef Container container_type;
Açıklamalar
türü, şablon parametresi Container
için bir eş anlamlıdır. sınıf ve varsayılan deque
sınıf olmak üzere list
iki C++ Standart Kitaplık dizisi kapsayıcı sınıfı, bir queue
nesne için temel kapsayıcı olarak kullanılacak gereksinimleri karşılar. Gereksinimleri karşılayan kullanıcı tanımlı türler de kullanılabilir.
hakkında Container
daha fazla bilgi için konunun Açıklamalar bölümüne queue Class
bakın.
Örnek
bildirme ve kullanma container_type
örneği için queue
örneğine bakın.
empty
boş queue
olup olmadığını sınar.
bool empty() const;
Dönüş Değeri
true
queue
boşsa; false
queue
yoksa.
Örnek
// queue_empty.cpp
// compile with: /EHsc
#include <queue>
#include <iostream>
int main( )
{
using namespace std;
// Declares queues with default deque base container
queue <int> q1, q2;
q1.push( 1 );
if ( q1.empty( ) )
cout << "The queue q1 is empty." << endl;
else
cout << "The queue q1 is not empty." << endl;
if ( q2.empty( ) )
cout << "The queue q2 is empty." << endl;
else
cout << "The queue q2 is not empty." << endl;
}
The queue q1 is not empty.
The queue q2 is empty.
front
öğesinin önündeki queue
ilk öğeye başvuru döndürür.
reference front();
const_reference front() const;
Dönüş Değeri
öğesinin queue
ilk öğesi. queue
boşsa, dönüş değeri tanımlanmamış olur.
Açıklamalar
değerinin dönüş değeri front
bir const_reference
queue
öğesine atanmışsa, nesnesi değiştirilemez. değerinin dönüş değeri front
bir reference
queue
öğesine atanmışsa, nesnesi değiştirilebilir.
Üye işlevi, denetlenen dizinin ilk öğesine bir reference
döndürür ve bu öğe boş olmalıdır.
1 veya 2 olarak tanımlanan kullanılarak _ITERATOR_DEBUG_LEVEL
derlendiğinde, boş queue
bir içindeki bir öğeye erişmeye çalışırsanız bir çalışma zamanı hatası oluşur. Daha fazla bilgi için bkz . İşaretli Yineleyiciler .
Örnek
// queue_front.cpp
// compile with: /EHsc
#include <queue>
#include <iostream>
int main() {
using namespace std;
queue <int> q1;
q1.push( 10 );
q1.push( 20 );
q1.push( 30 );
queue <int>::size_type i;
i = q1.size( );
cout << "The queue length is " << i << "." << endl;
int& ii = q1.back( );
int& iii = q1.front( );
cout << "The integer at the back of queue q1 is " << ii
<< "." << endl;
cout << "The integer at the front of queue q1 is " << iii
<< "." << endl;
}
pop
öğesinin önünden queue
kaldırır.
void pop();
Açıklamalar
queue
üye işlevini uygulamak için nonempty olmalıdır. öğesinin queue
üst kısmı, en son eklenen öğenin kapladığı konumdur ve kapsayıcının sonundaki son öğedir.
Örnek
// queue_pop.cpp
// compile with: /EHsc
#include <queue>
#include <iostream>
int main( )
{
using namespace std;
queue <int> q1, s2;
q1.push( 10 );
q1.push( 20 );
q1.push( 30 );
queue <int>::size_type i;
i = q1.size( );
cout << "The queue length is " << i << "." << endl;
i = q1.front( );
cout << "The element at the front of the queue is "
<< i << "." << endl;
q1.pop( );
i = q1.size( );
cout << "After a pop the queue length is "
<< i << "." << endl;
i = q1. front ( );
cout << "After a pop, the element at the front of the queue is "
<< i << "." << endl;
}
The queue length is 3.
The element at the front of the queue is 10.
After a pop the queue length is 2.
After a pop, the element at the front of the queue is 20.
push
öğesinin arkasına queue
bir öğe ekler.
void push(const Type& val);
Parametreler
val
öğesinin arkasına queue
eklenen öğesi.
Açıklamalar
öğesinin arka kısmı queue
, en son eklenen öğenin kapladığı konumdur ve kapsayıcının sonundaki son öğedir.
Örnek
// queue_push.cpp
// compile with: /EHsc
#include <queue>
#include <iostream>
int main( )
{
using namespace std;
queue <int> q1;
q1.push( 10 );
q1.push( 20 );
q1.push( 30 );
queue <int>::size_type i;
i = q1.size( );
cout << "The queue length is " << i << "." << endl;
i = q1.front( );
cout << "The element at the front of the queue is "
<< i << "." << endl;
}
The queue length is 3.
The element at the front of the queue is 10.
queue
queue
Boş veya bir temel kapsayıcı nesnesinin kopyası olan bir oluşturur.
queue();
explicit queue(const container_type& right);
Parametreler
right
Oluşturulacak const
queue
kapsayıcı bir kopya olacaktır.
Açıklamalar
için queue
varsayılan temel kapsayıcıdır deque
. Temel kapsayıcı olarak da belirtebilirsinizlist
, ancak gerekli pop_front
üye işlevi olmadığından belirtemezsinizvector
.
Örnek
// queue_queue.cpp
// compile with: /EHsc
#include <queue>
#include <vector>
#include <list>
#include <iostream>
int main( )
{
using namespace std;
// Declares queue with default deque base container
queue <char> q1;
// Explicitly declares a queue with deque base container
queue <char, deque<char> > q2;
// These lines don't cause an error, even though they
// declares a queue with a vector base container
queue <int, vector<int> > q3;
q3.push( 10 );
// but the following would cause an error because vector has
// no pop_front member function
// q3.pop( );
// Declares a queue with list base container
queue <int, list<int> > q4;
// The second member function copies elements from a container
list<int> li1;
li1.push_back( 1 );
li1.push_back( 2 );
queue <int, list<int> > q5( li1 );
cout << "The element at the front of queue q5 is "
<< q5.front( ) << "." << endl;
cout << "The element at the back of queue q5 is "
<< q5.back( ) << "." << endl;
}
The element at the front of queue q5 is 1.
The element at the back of queue q5 is 2.
size
içindeki queue
öğe sayısını döndürür.
size_type size() const;
Dönüş Değeri
geçerli uzunluğu queue
.
Örnek
// queue_size.cpp
// compile with: /EHsc
#include <queue>
#include <iostream>
int main( )
{
using namespace std;
queue <int> q1, q2;
queue <int>::size_type i;
q1.push( 1 );
i = q1.size( );
cout << "The queue length is " << i << "." << endl;
q1.push( 2 );
i = q1.size( );
cout << "The queue length is now " << i << "." << endl;
}
The queue length is 1.
The queue length is now 2.
size_type
içindeki öğe sayısını temsil eden işaretsiz bir queue
tamsayı türü.
typedef typename Container::size_type size_type;
Açıklamalar
türü, tarafından uyarlanan temel kapsayıcının eş anlamlısıdır size_type
queue
.
Örnek
bildirme ve kullanma size_type
örneği için queue::front
örneğine bakın.
value_type
içinde öğe olarak depolanan nesne türünü temsil eden bir queue
tür.
typedef typename Container::value_type value_type;
Açıklamalar
türü, tarafından uyarlanan temel kapsayıcının eş anlamlısıdır value_type
queue
.
Örnek
// queue_value_type.cpp
// compile with: /EHsc
#include <queue>
#include <iostream>
int main( )
{
using namespace std;
// Declares queues with default deque base container
queue<int>::value_type AnInt;
AnInt = 69;
cout << "The value_type is AnInt = " << AnInt << endl;
queue<int> q1;
q1.push(AnInt);
cout << "The element at the front of the queue is "
<< q1.front( ) << "." << endl;
}
The value_type is AnInt = 69
The element at the front of the queue is 69.
Ayrıca bkz.
C++ Standart Kitaplığında İş Parçacığı Güvenliği
C++ Standart Kitaplığı Başvurusu