1. ホーム
  2. c++

[解決済み] C++の配列とベクトルの比較

2022-04-21 18:46:55

質問

私はベクターがとても好きです。気の利いたことだし、速いし。でも、バラレイというものがあるのは知っています。なぜベクターではなく、バラクレイを使わなければならないのでしょうか?また、valarrayには構文上の利点があることは知っていますが、それ以外では、どのような場合に役に立つのでしょうか?

どのように解決するのですか?

バラレイ(値配列)は、Fortranの速度の一部をC++に導入することを目的としています。ポインターのバラレイを作らないから、コンパイラがコードを想定して、より良く最適化できるのです。(Fortranが高速である主な理由は、ポインタ型がないため、ポインタのエイリアシングが発生しないことです)。

Valarrayにもクラスがあり、合理的に簡単にスライスすることができますが、標準のこの部分にはもう少し仕事が必要です。サイズ変更は破壊的で イテレータがない C++11からイテレータが搭載されました。

だから、もし数字を扱っていて、利便性がそれほど重要でないなら、valarraysを使いましょう。そうでなければ、ベクトルがより便利です。