@队列副本
当使用STL的queue时,元素入队的push操作只是制造了该元素的一个副本入队,因此在入队后对原元素的修改不会影响队列中的副本,而对队列中的副本的修改也不会改变原元素。
#include<bits/stdc++.h>
using namespace std;
struct node{
int data;
}a[10];
int main(){
queue<node> q;
for(int i=1;i<=3;i++){
a[i].data=i;
q.push(a[i]);
}
//尝试直接把队首元素的数据域改为 100
q.front().data=100;
//事实上对队列元素的修改无法改变原元素
cout<<a[1].data<<endl;
//然后尝试直接修改啊 a[1]的数据域为200
a[1].data=200;
//事实上对原元素的修改无法改变队列中的元素
cout<<q.front().data;
return 0;
}