次の関数を作成しました。これは、「ブロック」を引数として取り、ブロックのリスト「lru」で「ブロック」を検索します。ここで「block」はクラス「Block」のインスタンスです。以下は、「lru」の宣言です。
list<Block> lru;
そして、以下は私の検索機能です:
int LRU::searchLRU(Block block)
{
if (lru.size() == 0)
{
lru.push_back(block);
return 1;
}
list<Block>::iterator i;
for (i = lru.begin(); i != lru.end(); i++)
{
if (i->get_set() == block.get_set() && i->get_index() == block.get_index())
{
lru.push_back(block);
lru.erase(i);
return 2;
}
}
if (lru.size() == size)
{
lru.pop_front();
lru.push_back(block);
return 3;
}
}
しかし問題は、関数が「0」を返す場合があることです。その結果、私のプログラム全体が適切に機能していません。私はすべてのケースを処理したと感じています。
誰かが間違いを指摘できますか、または関数が「0」を返す理由を教えてください。