当前位置:编程学习 > C/C++ >>

deque iterator not dereferencable 问题

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.zzzyk.com


第二:在多线程编程里面,这种问题也出现的比较多。
两个线程同时访问同一个容器,也会导致出现这种情况。
解决办法:关键代码段。
不建议用互斥内核对象是因为关键代码段是用户层的,调用很快,互斥内核对象调用需要从用户态转入内核态!时间很长!

补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,