Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我能';在我的抽象数据类型中不使用队列_C++_Queue - Fatal编程技术网

C++ 我能';在我的抽象数据类型中不使用队列

C++ 我能';在我的抽象数据类型中不使用队列,c++,queue,C++,Queue,我正在处理图形,我创建了一个图形类,并在代码中添加了#include。如果我在main函数中写入queue MyQueue,它工作得很好。但是如果我在类图中编写相同的代码queue MyQueue,它会给我一个运行时错误。等待你的帮助 #include <iostream> #include <vector> #include <queue> using namespace std; class AdjListImp_Graph { public:

我正在处理图形,我创建了一个图形类,并在代码中添加了
#include
。如果我在main函数中写入
queue MyQueue
,它工作得很好。但是如果我在类图中编写相同的代码
queue MyQueue
,它会给我一个运行时错误。等待你的帮助

#include <iostream>
#include <vector>
#include <queue>

using namespace std;

class AdjListImp_Graph
{
    public: 
    vector<int> *array[8];
    vector<int> List[8];
    AdjListImp_Graph(){
        for(int i=1; i<8; i++)
            array[i] = &List[i];
    }
};

class AdjMatrixImp_Graph
{
    public:
    int AdjMatrix[7][7];
    queue<int> MyList; // !Having problem with this code!
    AdjMatrixImp_Graph(){
        for(int i=0; i<8; i++)
            for(int j=0; j<8; j++)
                AdjMatrix[i][j] = 0;
    }
};

int main (void)
{
    AdjListImp_Graph MyGraph_3a, MyGraph_3b, MyGraph_3c;
    MyGraph_3a.List[1].push_back(4);
    MyGraph_3a.List[2].push_back(4);
    MyGraph_3a.List[4].push_back(7);
    MyGraph_3a.List[6].push_back(3);
    MyGraph_3a.List[7].push_back(5);
    MyGraph_3b.List[1].push_back(2);
    MyGraph_3b.List[2].push_back(5);    MyGraph_3b.List[2].push_back(7);
    MyGraph_3b.List[4].push_back(3);    MyGraph_3b.List[4].push_back(6);
    MyGraph_3b.List[5].push_back(4);
    MyGraph_3b.List[6].push_back(1);    MyGraph_3b.List[6].push_back(7);
    MyGraph_3c.List[2].push_back(1);
    MyGraph_3c.List[3].push_back(4);    MyGraph_3c.List[3].push_back(6);
    MyGraph_3c.List[4].push_back(5);
    MyGraph_3c.List[5].push_back(2);
    MyGraph_3c.List[6].push_back(7);
    MyGraph_3c.List[7].push_back(2);
    /********************************************************************************************************/
    AdjMatrixImp_Graph My_Graph_3a, My_Graph_3b, My_Graph_3c;
    My_Graph_3a.AdjMatrix[1][4] = 1;
    My_Graph_3a.AdjMatrix[2][4] = 1;
    My_Graph_3a.AdjMatrix[3][2] = 1;
    My_Graph_3a.AdjMatrix[4][7] = 1; // 4'ten 7'ye yol   var.
    My_Graph_3a.AdjMatrix[6][3] = 1;
    My_Graph_3a.AdjMatrix[7][5] = 1;
    My_Graph_3b.AdjMatrix[1][2] = 1;
    My_Graph_3b.AdjMatrix[2][5] = 1;    My_Graph_3b.AdjMatrix[2][7] = 1;
    My_Graph_3b.AdjMatrix[4][3] = 1;    My_Graph_3b.AdjMatrix[4][6] = 1;
    My_Graph_3b.AdjMatrix[5][4] = 1;
    My_Graph_3b.AdjMatrix[6][1] = 1;    My_Graph_3b.AdjMatrix[6][7] = 1;
    My_Graph_3c.AdjMatrix[2][1] = 1;
    My_Graph_3c.AdjMatrix[3][4] = 1;    My_Graph_3c.AdjMatrix[3][6] = 1;
    My_Graph_3c.AdjMatrix[4][5] = 1;
    My_Graph_3c.AdjMatrix[5][2] = 1;
    My_Graph_3c.AdjMatrix[6][7] = 1;
    My_Graph_3c.AdjMatrix[7][2] = 1;

    system("pause");
    return EXIT_SUCCESS;
}
#包括
#包括
#包括
使用名称空间std;
类AdjListImp_图
{
公众:
向量*数组[8];
向量表[8];
AdjListImp_图(){

对于(int i=1;i在
AdjMatrixImp_图形::AdjMatrix
的构造函数中初始化
AdjMatrixImp_图形
,您正在超出数组边界。它可能写入
AdjMatrixImp_图形::MyList的内存区域,并破坏其结构


将循环更改为
for(int i;i在
AdjMatrixImp\u Graph::AdjMatrix
的构造函数中初始化
AdjMatrixImp\u Graph
时,将超出数组边界。它可能写入
AdjMatrixImp\u Graph::MyList
的内存区域,并破坏其结构

将循环更改为
for(inti;i更改声明

    int AdjMatrix[7][7];

当您在
main
中有
queue
时,它会碰巧工作


顺便说一下,我强烈建议您更改数据结构的设计,不要使用指向容器的指针。

更改声明

    int AdjMatrix[7][7];

当您在
main
中有
queue
时,它会碰巧工作



顺便说一句,我强烈建议您更改数据结构的设计,不要使用指向容器的指针。

您将不得不发布准确的错误消息和代码片段。没有这些信息,我们无法帮助您。嗯。实际上,我们没有太多可以继续的内容。运行时错误是什么?您有什么建议吗“#在类标题中包含语句?这是我的代码..您必须发布准确的错误消息和代码段。没有这些信息,我们无法帮助您。嗯。我们没有太多可以继续的内容。运行时错误是什么?您有什么建议吗"#在类标题中包含语句?这是我的代码..谢谢。现在我修复了运行时错误。但不幸的是,我仍然无法在类标题中使用队列adt@KutluhanMetin您所说的“不能在我的adt中使用队列”是什么意思?我想在我的类图表中使用队列。我仍然可以在main中使用它,不能在我的类中使用它。@KutluhanMetin更改后to
int AdjMatrix[8][8];
,您发布的程序编译并运行时没有错误。谢谢。现在我修复了运行时错误。但不幸的是,我仍然无法在我的应用程序中使用队列adt@KutluhanMetin你说的
不能在我的adt中使用队列是什么意思?
我想在我的类图中使用队列。我仍然可以在main中使用它,不能在我的类中使用它。@KutluhanMetin切换到
intadjmatrix[8][8];
,您发布的程序编译并运行时不会出错。