程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> deque iterator not dereferencable 問題

deque iterator not dereferencable 問題

編輯:C++入門知識

STL裡面出現這個問題,糾結了半天,不知道什麼原因。
當然deque iterator not dereferencable。這個是deque出問題,vector、list也可以出問題的。也有很多人提問,但是回答的人很少。
最後還是找到一些答案了。
出現這種情況有兩種可能。
第一:訪問某一個不存在的位置。
比如:
[cpp]
#include<iostream> 
#include <queue>  
using namespace std; 
 
int main() 

    queue<int> x; 
     
    for(int i = 0;i < 10;i++) 
                { 
        x.push(i+1); 
    } 
     
    while(!x.empty()){ 
        cout << x.front() << " "; 
        x.pop(); 
        x.push(x.front()); 
        x.pop(); 
    } 
    cout << endl; 
 
return 0; 

這個例子在百度上面找到的,由於x.front()沒有元素訪問了 ,倒置出現這種錯誤。
所以:訪問前一定要判斷是否存在。 www.2cto.com


第二:在多線程編程裡面,這種問題也出現的比較多。
兩個線程同時訪問同一個容器,也會導致出現這種情況。
解決辦法:關鍵代碼段。
不建議用互斥內核對象是因為關鍵代碼段是用戶層的,調用很快,互斥內核對象調用需要從用戶態轉入內核態!時間很長!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved