簡體   English   中英

模板函數中的C ++ Memory Fault <queue>

[英]C++ Memory Fault in template function <queue>

我在運行時收到內存錯誤消息,我是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編譯器。

在第二次調用set.front() ,無法保證該集不為空。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM