首页 > 解决方案 > 这是一种在 C++ 中创建队列数组的方法吗?

问题描述

我正在尝试查看是否可以创建队列数组,然后输入以下内容:

void showq(queue <unsigned long long> gq)
{
    queue <unsigned long long> g = gq;
    while (!g.empty())
    {
        cout << '\t' << g.front();
        g.pop();
    }
    cout << '\n';
}

int main () 
{
    unsigned long long  lol = 589900;
    unsigned long long  lal = 585501;
    unsigned long long  lel = 584402;
    unsigned long long  lul = 583303;
    unsigned long long  lil = 582204;
    unsigned long long  l3l = 586605;
    unsigned long long val = 4;
    queue<unsigned long long> qt [val];
    qt[0].push(lol);
    qt[0].push(lol);
    qt[0].push(lol);
    qt[0].push(lol);
    qt[1].push(l3l);
    qt[2].push(l3l);
    qt[3].push(lal);
    qt[4].push(lal);
    

    return 0;
}

编译器没有抱怨,所以我认为这是正确的,但是一旦我开始访问“数组”,我就遇到了段错误。这到底是在做什么?

标签: c++

解决方案


明显的:

 qt[4].push(lal);

您正在访问数组中的第五个元素。 qt[3]是您可以达到的最大值。(0,1,2,3 是 4 个值,就像您指定的那样)


推荐阅读