是否可以修改c ++队列中的下一个元素(最旧的元素)?

时间:2013-11-29 22:27:25

标签: c++ struct queue

考虑类型包

的队列
queue < packet > buffer;

,其中

struct packet         {
  int src_id;
  int dst_id;
  int inter_dst_id; 
  bool phase;
 };

现在,请考虑一下:

if (buffer[i].Front().inter_dst_id == local_id && buffer[i].Front().phase == true)
    buffer[i].Front().phase = false;

但在上述情况下我不能写'阶段'。有可能吗?提前谢谢。

2 个答案:

答案 0 :(得分:2)

  

是否可以修改c ++队列中的下一个元素(最旧的元素)?

是的,就像这样:

buffer.front().phase = false;

有关std::queue here的更多信息,请参阅

答案 1 :(得分:0)

@juanchopanza:我无法使上述事情奏效。好像你无法修改队列的前面元素。相反,我使用了deque。

deque <packet> buffer;

然后,我将 buffer [i] .front 复制到临时变量。我更改了temp变量中的阶段。使用pop_front()删除了 buffer [i] .front 。最后,使用push_front()将修改后的阶段推送到temp变量。

我是stl的新手,因此花了一些时间。我不确定这是否是最好的方法,但它对我有用。