• ベストアンサー

配列の中身を逆にするために。。。

reverse関数を使おうとしました。 言語はC言語です。 reverse関数の意味に配列の並びを逆にします。 と書いてあったのでしようしたのですが。。。 コンパイルすると、「識別子が見つかりませんでした」 なります。 C言語では使えないのですか? ソフトはMicrosoft visual studioを使用してます。

質問者が選んだベストアンサー

  • ベストアンサー
  • kusa_cw
  • ベストアンサー率50% (4/8)
回答No.3

No.2さんも書かれていますが、C++であればreverse関数を使用できます。 STLという枠組みの中で、ともおっしゃられていますが、厳密には イテレータという枠組みの中でと言った方がいいかと思います。 配列のアドレスは広義にイテレータとして扱えますので、 #include <algorithm> int main( int, char** ) { char ary[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, }; std::reverse( &ary[0], &ary[10] ); } のようにして配列の要素を逆転させることは可能です。

evilspirit
質問者

お礼

char**という使い方もできるんですね。 stdについては最近しました。 これでまた一つ勉強にないりました。 CGHをやることになったので、真剣にC++について勉強してみます。 イテレータについてはまだよく分かってないのでその部分もやります。 ありがとうございました。

その他の回答 (2)

回答No.2

> reverse関数の意味に配列の並びを逆にします。 > と書いてあったのでしようしたのですが。。。 具体的に書いてあった内容をそのまま表示した方が、回答する側としてはわかりやすいのですが。 一番それらしいのが、STL の標準アルゴリズムにある、 reverse かと思いますが、それだと、「要素の並びを逆にする」かなと思います。 これだとすると、C++の、STLという枠組みの中でしか使えません。 STL 自体は、非常に便利なものなので勉強する価値は大いにありますが。

evilspirit
質問者

お礼

はい。 そのとおりでした。 C++がやはり必要だと思い調べたらSTLというのがありました。 C言語でreverseがあると思っていたのはC++のことでした。 勉強不足でした。ありがとうございます。

回答No.1

reverse関数はC言語の標準関数にはありません。 自作する必要があるのではないでしょうか。

evilspirit
質問者

お礼

最近C++を勉強しました。 C言語にはないんですね。 配列を他に作ったソースを作りました。 ありがとうございます。