私はポインタとして動的に割り当てられた配列を持つC++構造体を持っています。配列を逆にする関数がありますが、動作していないようです(一時変数が元の値を指していると思います)。デリバリングメンバポインタ
struct s {
int *array;
int length;
...
s(int n) {
this->array = new int[n];
this->length = n;
}
...
void reverse() {
for (int i = 0; i < this->length; i++) {
int n = this->array[i];
this->array[i] = this->array[this->length - i - 1];
this->array[this->length - i - 1] = n;
}
}
...
}
私はそのための配列が同じままで、逆転されない何これがやっていることはthis->array[this->length - i - 1] = this->array[i]
だと思います。私は配列ポインタを尊重する方法や、ちょうどnの中でthis->array[i]
の値を取る方法を知らない。
ロジックは逆になります。 at i = 0の場合、配列[n-1]を配列[0]に配置します.i = n-1で配列[0]を配列[n-1]に配置します。 –
私はforループの最初の部分は、配列の最初の半分が正しいと思うが、後半の最初の半分の "ミラー"イメージを作ると思います。コードの単純化のために、なぜポインタ配列を2番目の配列に逆順にして再利用するのではなく、どうして? –
今後のいくつかの質問を控えるかもしれないので[3つのルールとは何ですか?](http://stackoverflow.com/questions/4172722/what-is-the-rule-of-three)を読むことをお勧めします。 – user4581301