微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在双端队列中插入元素时出现“std::bad_alloc”

如何解决在双端队列中插入元素时出现“std::bad_alloc”

我做了一些调试,发现是 while 循环中的 q.push_back(nbr) 导致了错误,我不明白为什么没有分配请求的空间。请帮忙。 谢谢。

vector<int> bfs2(int V,vector<int> adj2[])
{
    int src = 0;
    bool visited[V];

    for (int i = 0; i < V; i++)
    {
        visited[i] = false;
    }

    deque<int> q;
    q.push_back(src);
    visited[src] = true;

    vector<int> res;

    while (q.empty() != true)
    {
        int top = q.front();
        q.pop_front();

        res.push_back(top);

        vector<int> nbrsveec = adj2[top];

        for (int nbr : nbrsveec)
        {
            if (visited[nbr] != true)
            {
                // cout<<nbr<<endl;
                q.push_back(nbr);
                 visited[nbr] = true;
            }
        }
    }
     return res;
}

解决方法

bad_alloc 表示您的内存不足。你用的是什么系统?

也许您应该定义 const vector<int> & nbrsveec 以避免复制(或直接在 for 循环中使用它)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。