1. ホーム
  2. c++

[解決済み] std::arrayができた今、C言語の配列にはどんな使い道があるのでしょうか?

2023-03-10 05:23:28

疑問点

std::array は、C言語の配列よりはるかに優れています。また、レガシーコードと相互運用したい場合でも、単に std::array::data() . 旧式の配列を必要とする理由はあるのでしょうか?

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

私が何かを見逃していない限り (私は標準の最新の変更をあまり詳しく追っていません)、C スタイルの配列のほとんどの使用法はまだ残っています。 std::array は静的な初期化を許可していますが、それでも初期化子を数えてはくれません。 そして、C スタイルの配列の唯一の本当の使用法は、以前の std::array のような静的初期化されたテーブルのためのものでした。 という行に沿ったものです。

MyStruct const table[] =
{
    { something1, otherthing1 },
    //  ...
};

を使い、通常の beginend テンプレート関数( C++11で採用) を使って反復処理します。 コンパイラが初期化子の数から判断するサイズには一切触れずに。

EDIT: もうひとつ忘れていたことがあります。文字列リテラルは依然として C スタイルの配列です。 char[] . 文字列リテラルを使うことを排除する人はいないと思います。 std::array .