queue < int* > qq;
for (int i = 0; i < N; i++) {
int cc[2] = {i, i + 1};
qq.push(cc);
}
Nは大きいですが、正確ではないので、キューを使用します。多くの配列をキューに格納したいのですが、qqが格納した配列は同じものです。どうすればいいですか?
あなたのコードは機能しません。それぞれcc
がループ内で同じスタック位置を持ちます。
cc
おそらく使用して、ヒープに配列を割り当てる必要がありint *cc = new int[2];
ます(ただし、後で必要にdelete
なります)。
より良い方法は、 or orcc
として宣言することです (C++11 の場合)。std::vector
std::array
std::tuple
あなたがしていることは構文的には正しいですが、概念的には間違っています。各反復で作成され、反復の最後に破棄されるローカル配列を挿入しています。qq
使えない状態のままです。ループの外側で、 の要素を逆参照すると、qq
未定義の動作が発生します。
使用std::vector
:
std::queue<std::vector<int>> qq;
for (int i = 0; i < N; i++) {
std::vector<int> cc{i, i + 1};
qq.push(cc);
}
毎回同じアドレス、つまり をプッシュしますcc
。次のように、2 つの値を保持する構造体を定義する必要があります。
struct CC {
int x, y;
CC(int _x, int _y) : x(_x), y(_y) {}
}
queue<CC> qq;
その後..
qq.push(CC(i, i + 1));