Aracılığıyla paylaş


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 queueher iki ucunda da denetlenebilir.

Sözdizimi

template <class Type, class Container = deque <Type>>
class queue

Parametreler

Type
içinde queuedepolanacak öğe veri türü.

Container
uygulamak için kullanılan temel kapsayıcının queuetü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_backbackve pop_frontişlemlerini frontdestekleyen başka bir sıralı listkapsayı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, queueve 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 ve back öğelerine bu şekilde erişme front kısıtlaması, sınıfı kullanmanın queue 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

Ad Tanım
queue queue Boş veya bir temel kapsayıcı nesnesinin kopyası olan bir oluşturur.

Tür tanımları

Ad Tanım
container_type tarafından queueuyarlanacak temel kapsayıcıyı sağlayan bir tür.
size_type içindeki öğe sayısını temsil eden işaretsiz bir queuetamsayı türü.
value_type içinde öğe olarak depolanan nesne türünü temsil eden bir queuetür.

İşlevler

Ad Tanım
back öğesinin arkasında queueson ve en son eklenen öğeye başvuru döndürür.
empty boş olup olmadığını sınar queue .
front öğesinin önündeki queueilk öğeye başvuru döndürür.
pop öğesinin önünden queuekaldırır.
push öğesinin arkasına queuebir öğe ekler.
size içindeki queueöğe sayısını döndürür.

back

öğesinin arkasında queueson ve en son eklenen öğeye başvuru döndürür.

reference back();

const_reference back() const;

İade Değeri

öğesinin queueson öğesi. queue boşsa, dönüş değeri tanımlanmamış olur.

Açıklamalar

değerinin dönüş değeri back bir const_referencequeue öğesine atanmışsa, nesnesi değiştirilemez. değerinin dönüş değeri back bir referencequeue öğesine atanmışsa, nesnesi değiştirilebilir.

1 veya 2 olarak tanımlanan kullanılarak _ITERATOR_DEBUG_LEVEL derlendiğinde, boş queuebir 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 Containeriç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 Containerdaha 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;

İade Değeri

truequeue boşsa; falsequeue 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 queueilk öğeye başvuru döndürür.

reference front();

const_reference front() const;

İade Değeri

öğesinin queueilk öğesi. queue boşsa, dönüş değeri tanımlanmamış olur.

Açıklamalar

değerinin dönüş değeri front bir const_referencequeue öğesine atanmışsa, nesnesi değiştirilemez. değerinin dönüş değeri front bir referencequeue öğ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ş queuebir 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 queuekaldı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 queuebir öğe ekler.

void push(const Type& val);

Parametreler

val
öğesinin arkasına queueeklenen öğ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 constqueue 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;

İade 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 queuetamsayı 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_typequeue.

Ö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 queuetü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_typequeue.

Ö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