我在运行时收到内存错误消息,我是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次这个函数,然后在第一次在队列中调用该函数时,程序在函数中的两个循环之间发出“内存故障”消息。
我正在使用gnu编译器。
答案 0 :(得分:2)
在您对set.front()
的第二次调用中,无法保证该集合不为空。