質問: C/C++初心者ですが、仕事でC++の中規模開発に携わることになりました。今までJavaで開発していたのですが、Javaでの開発は要素数が事前にわかっていれば極力配列を使えと教えられてきましたが、C++では配列を扱うのはstd::vectorがメインのように感じます。処理が簡潔になるのはよくわかるのですが、配列を使ってもっとレガシーな感じで書きたいのですが実際の現場ではどう使われているのか、皆様のご意見をお聞かせ頂きたく投稿させていただきました。
回答: すでに出そろっている感がありますが、私の場合もC++では素の配列を使うことは減りましたね。可変サイズにしたいときや大量のデータを扱うときはほぼ`vector<>`ですし、固定サイズは`array<>`が便利なのでそれを使います。 > > 配列を使ってもっとレガシーな感じで書きたいのですが > > > それに何の意味があるのかよく判りません。意図せぬバグの温床となること請け合いです。素の配列はサイズの管理が煩雑になりがちですし、範囲チェックも設計者の責任で行わなければいけません。 ただし、素の配列が便利なケースもあります。例えば、テンプレートとの組み合わせで素の配列でもサイズ管理が可能な場合ですね。 ``` template void function(int (&data)[N]) { std::cout << "N=" << N << std::endl; for(auto x : data) { std::cout << x << std::endl; } } int main() { int a[]{1, 2, 3}; function(a); int b[]{1, 2, 3, 4, 5, 6}; function(b); return 0; } ``` `array<>`では上記配列`a`,`b`のような初期化ができないので、そのような書き方をしたい場合は素の配列を使うことがあります。