C で動的 2 次元配列を作成するには?
Dec 14, 2024 pm 06:00 PMC での動的 2 次元配列の作成
C では、配列を宣言する従来の方法では、コンパイル時に配列の次元を指定します。ただし、ユーザー入力に基づいてサイズが動的に決定される配列を作成する必要がある場合はどうすればよいでしょうか?
ベクトルのベクトル: Vector
1 つのアプローチは、ベクトルのベクトルを使用することです。ベクトル
カスタム マトリックス クラス
最適化パフォーマンスを向上させるには、カスタム行列クラスの作成を検討してください:
template <class T> class matrix { int columns_; std::vector<T> data; public: matrix(int columns, int rows) : columns_(columns), data(columns * rows) {} T& operator()(int column, int row) { return data[row * columns_ + column]; } };
ログイン後にコピー
このクラスでは、簡潔な Operator() を使用して行列要素にアクセスできます。 2 次元配列の構文を模倣します。
行列の実装例
参考までに、演算子をサポートするために複数レベルのプロキシを使用して静的に割り当てられた 3D 行列の実装を次に示します。 []構文:
template<class T, int size> class matrix3 { T data[size][size][size]; friend class proxy; friend class proxy2; class proxy { matrix3& m_; int index1_, index2_; public: proxy(matrix3& m, int i1, int i2) : m_(m), index1_(i1), index2_(i2) {} T& operator[](int index3) { return m_.data[index1_][index2_][index3]; } }; class proxy2 { matrix3& m_; int index_; public: proxy2(matrix3& m, int d) : m_(m), index_(d) {} proxy operator[](int index2) { return proxy(m_, index_, index2); } }; public: proxy2 operator[](int index) { return proxy2(*this, index); } };
ログイン後にコピー
使用法
どちらの実装も、使い慣れた C 構文で動的 2 次元配列を作成および操作するために使用できます。
以上がC で動的 2 次元配列を作成するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

人気の記事
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1週間前
By 尊渡假赌尊渡假赌尊渡假赌

人気の記事
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1週間前
By 尊渡假赌尊渡假赌尊渡假赌

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック
Gmailメールのログイン入り口はどこですか?
7277
9


Java チュートリアル
1622
14


CakePHP チュートリアル
1285
46


Laravel チュートリアル
1257
25


PHP チュートリアル
1205
29



C言語関数によって返される値の種類は何ですか?返品値を決定するものは何ですか?

STL(ソート、検索、変換など)のアルゴリズムを効率的に使用するにはどうすればよいですか?
