Bu sayfadan geçtim ama bunun sebebini anlayamıyorum. Orada bahsediliyor
"hiç bir değer döndürmemesi ve istemcilerin sıranın önündeki değeri incelemek için front () kullanmasını gerektirmesi daha mantıklıdır"
Ancak front () 'den bir öğeyi incelemek, o öğenin lvalue içinde kopyalanmasını da gerektiriyordu. Örneğin bu kod segmentinde
std::queue<int> myqueue;
int myint;
int result;
std::cin >> myint;
myqueue.push (myint);
/ * burada sonuca atanacak olan RHS'de geçici oluşturulacak ve referansla döndürülmesi durumunda pop işleminden sonra sonuç geçersiz kılınacak * /
result = myqueue.front(); //result.
std::cout << ' ' << result;
myqueue.pop();
beşinci satırda cout nesnesi önce myqueue.front () 'un bir kopyasını oluşturur ve ardından bunu sonuca atar. Öyleyse, fark ne, pop işlevi de aynı şeyi yapmış olabilir.
front()
aynı zamanda o öğenin ldeğer olarak kopyalanmasını gerektirdi" - hayır öyle değil. front
değer değil, referans döndürür. Referans verdiği değeri kopyalamadan inceleyebilirsiniz.
pop()
. Eğer kullanırsanız std::queue<T, std::list<T>>
o andan itibaren sağlanan referansla ilgili herhangi bir sorun bulunmadığı front()
bir tarafından geçersiz ediliyor push()
. Ama gerekir biliyorum , kullanım deseni ve kısıtlamaları belgelemek gerekir.
void std::queue::pop();
).