ホームページ >バックエンド開発 >C++ >ユーザー入力に基づいて C で動的 2 次元配列を効率的に作成するにはどうすればよいですか?

ユーザー入力に基づいて C で動的 2 次元配列を効率的に作成するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-07 21:28:15539ブラウズ

How Can I Efficiently Create a Dynamic Two-Dimensional Array in C   Based on User Input?

ユーザー入力に基づいた動的 2 次元配列の作成

一部のプログラミング シナリオでは、2 次元配列を作成する必要がある場合があります。ユーザー入力によって決定されるサイズの配列。従来の配列では宣言時に固定次元が必要ですが、C ではこの問題に対処するソリューションが提供されています。

オプション 1: ベクトルのベクトルを使用する

ベクトルのベクトル。次のように表されます。 Vector> を使用すると、2 次元配列を動的に作成できます。ただし、このメソッドはポインタの逆参照が繰り返されるため非効率的であり、パフォーマンスの低下につながる可能性があります。

オプション 2: カスタム行列クラスとオーバーロード演算子を使用する

より効率的このアプローチには、メモリ割り当てを処理し、要素にアクセスするためのオーバーロードされた演算子を提供するカスタム行列クラスを作成することが含まれます。このアプローチにより、効率的なメモリ管理と高速なアクセス時間が保証されます。

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() により、要素にアクセスするための添字のような便利な構文が可能になります。

使用例:

matrix<int> myMatrix(5, 5); // Declare a 5x5 matrix

myMatrix(0, 0) = 10; // Set the (0, 0) element to 10
std::cout << myMatrix(0, 0); // Output the (0, 0) element, which should be 10

結論

この記事では、動的 2 次元配列を作成するための 2 つのオプションを検討し、より詳細でパフォーマンスの高い代替手段を提供します。従来のベクトルのベクトルによるアプローチです。オーバーロードされた演算子を含むカスタム行列クラスは、効率的なメモリ管理とアクセス速度の向上を提供するため、パフォーマンスが重要なシナリオに適した選択肢となります。

以上がユーザー入力に基づいて C で動的 2 次元配列を効率的に作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。