0

STL リストを操作していますが、最後の要素を取得しようとしているときにエラーが発生し続けます。クラスがあります

class Buffer {
private:
  list<Flit*> fifo;
  ...

public:
  ...
Flit *peek_last_flit(void) const;

  ...
};

そして実装

Flit *Buffer::peek_last_flit(void) const {
   if (fifo.empty())
       return 0;

   Flit *f = *(fifo.begin());
   return f;
}

リストの先頭を返す同様の実装があります。

Flit *Buffer::peek_flit(void) const {
    if (fifo.empty())
        return 0;

    Flit *f = *(fifo.begin());
    return f;
}

この問題にどのように対処すればよいですか (両方のプロシージャを呼び出していますが、Peek_last_flit を呼び出すと、デバッグ アサーリオン エラー メッセージが表示されます: Expression: list iterator not dereferencable.

イテレータを保持するにはどうすればよいですか? どんな助けでも大歓迎です。

4

2 に答える 2

3
Flit *Buffer::peek_last_flit(void) const {
   if (fifo.empty())
       return 0;

   return fifo.back();
}
于 2012-07-21T11:04:53.907 に答える
0

container.end()参照解除できません。

--container.end()最後の要素を取得する必要があります。

于 2012-07-21T11:06:58.447 に答える