0

大量のデータを格納するために C++ の priority_queue データ構造を使用しています。ただし、おそらくスタックオーバーフローエラーが原因で、常にセグメンテーション違反が発生します。私のpriority_queueの定義は次のとおりです。

typedef struct cell {
    int x;
    int y;
    float value;
}*cell_p;

struct cell_comparator {
    bool operator()(cell_p arg1, cell_p arg2) {
        return arg1->value > arg2->value;
    }
};

priority_queue<cell_p, vector<cell_p>, cell_comparator>* open;

そしてメイン関数で:

open = new priority_queue<cell_p, vector<cell_p>, cell_comparator>();

int x, y;

for (x = 0; x < nXSize; x++) {
    for (y = 0; x < nYSize; y++) {
        int index = (y * nXSize) + x;
        cell_p c = (cell_p) malloc(sizeof(cell));
        c->x = x;
        c->y = y;
        c->value = input_buffer[index];
        open->push(c);
    }
}

コンテナー クラスとして vector を使用しましたが、ヒープではなくスタックにデータを格納しているようです。ヒープにデータを格納するようにpriority_queueに指示するにはどうすればよいですか?

4

1 に答える 1