无法取消引用值初始化的双端队列迭代器

时间:2018-10-28 13:09:54

标签: c++ deque

我有一个线程用回叫调用来填充双端队列。该线程首先锁定互斥锁,然后再执行其操作。

第二个线程正在使用原始双端队列的双端队列指针,并且刚刚读取它,而在读取双端队列时却遇到错误“无法取消引用值初始化的双端队列迭代器”。我已经检查过了,并且没有超出双端队列的范围。

这是伪代码:

// Thread 1
deque<float> main_deque;

void FillDeque()
{
    MutexLock Lock(mutex);

    for (size_t i = 0; i < main_deque.size(); i++)
    {
        main_deque.push_back(-10.0);
    }
}

// Thread 2

void ReadDeque(deque<float> *main_deque)
{
    for (size_t i = 0; i < main_deque->size(); i++)
    {
        float a = (*main_deque)[i];
    }
}

编辑:如果我将双端队列更改为vector,则一切正常。

0 个答案:

没有答案