Согласно do c сигнатуры функции pu sh в очереди: std::queue::push(const value_type& val)
std::queue::push(value_type&& val)
Таким образом, он в основном копируется в очередь, что можно проверить с помощью:
#include <iostream>
#include <queue>
int main() {
int iarray[3] = { 1,2,3 };
std::queue<int> q;
q.push(iarray[2]);
std::cout << q.front();
iarray[2] = 4;
std::cout << q.front();
return 0;
}
Для уточнения,
Вот что происходит:
линия q.push(iarray[2]);
звонки void push (const value_type& val)
из класса очереди.
Определение void push (const value_type& val)
:
void push(const value_type& _Val) {
c.push_back(_Val);
}
Где c
- защищенный экземпляр класса _Container
Строка c.push_back(_Val)
фактически вызывает конструктор копирования объекта _Val