実行時にメモリ障害メッセージが表示されます。STLを初めて使用するため、関数でキューを削除するなどの特別な方法でキューを処理する必要があるかどうかわかりません。
この関数にエラーをトレースしました
template <typename T>
bool contains(std::queue<T> set, T val){
std::queue<T> hold;
bool isContained = false;
if (set.front() == val) isContained = true;
while(!set.empty()){
hold.push(set.front());
set.pop();
if (set.front() == val) isContained = true;
}
while(!hold.empty()){
set.push(hold.front());
hold.pop();
}
return isContained;
}
私のmain()では、この関数をキューに対して20回正常に呼び出し、次にキューで関数が最初に呼び出されたときに、プログラムは関数内の2つのループの間に「メモリ障害」メッセージを吐き出します。
私はgnuコンパイラを使用しています。