还在苦苦敲代码开发APP?你out啦! 试试积木搭建APP吧~

deque iterator not dereferencable 问题

来源:转载     2016-09-12 11:41:48    人气:     我有话说( 0 人参与)

STL里面出现这个问题,纠结了半天,不知道什么原因。当然deque iterator not dereferencable。这个是deque出问题,vector、list也可以出...

STL里面出现这个问题,纠结了半天,不知道什么原因。

当然deque iterator not dereferencable。这个是deque出问题,vector、list也可以出问题的。也有很多人提问,但是回答的人很少。最后还是找到一些答案了。

出现这种情况有两种可能:

第一:访问某一个不存在的位置。
比如:

#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()没有元素访问了 ,倒置出现这种错误。
所以:访问前一定要判断是否存在。 


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

deque iterator

本文源自互联网,采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可,
版权归原作者,如有问题请联系service@tsingfun.com (编辑:admin)
分享到: