0

我在运行时收到内存错误消息,我是 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 编译器。

4

1 回答 1

2

在您的第二次调用中set.front(),不能保证集合不为空。

于 2013-03-15T05:41:02.027 回答