Saya membuka halaman ini tetapi saya tidak bisa mendapatkan alasan yang sama. Di sana disebutkan itu
"lebih bijaksana untuk tidak mengembalikan nilai sama sekali dan meminta klien menggunakan front () untuk memeriksa nilai di depan antrean"
Tapi memeriksa elemen dari front () juga membutuhkan elemen itu untuk disalin di lvalue. Misalnya di segmen kode ini
std::queue<int> myqueue;
int myint;
int result;
std::cin >> myint;
myqueue.push (myint);
/ * di sini sementara akan dibuat di kanan atas yang akan ditetapkan ke hasil, dan jika dikembalikan dengan referensi maka hasil akan dianggap tidak valid setelah operasi pop * /
result = myqueue.front(); //result.
std::cout << ' ' << result;
myqueue.pop();
pada baris kelima objek cout pertama membuat salinan myqueue.front () kemudian menetapkan itu ke hasil. Jadi, apa bedanya, fungsi pop bisa melakukan hal yang sama.
front()
juga mengharuskan elemen itu disalin di lvalue" - tidak, tidak. front
mengembalikan referensi, bukan nilai. Anda dapat memeriksa nilai yang diacunya tanpa menyalinnya.
pop()
. Jika Anda menggunakan std::queue<T, std::list<T>>
maka tidak ada kekhawatiran tentang referensi yang diberikan front()
tidak valid oleh a push()
. Tetapi Anda harus mengetahui pola penggunaan Anda dan harus mendokumentasikan batasan Anda.
void std::queue::pop();
).