2016-08-04 6 views
0

私は、2dベクターが非常に非効率であり、避けるべきであるとC++プライマーが言ったことを覚えています。 しかし、2次元配列は、作成と削除の両方に関してかなり不便であるようです。2次元アレイ、2次元ベクトル、これはより効率的ですか?

他の方法がありますか?または2次元配列に対してまだ競合する2次元ベクトル?

+2

C++について具体的に話している場合、C++タグで質問にタグを付ける必要があります。また、私はあなたがそれらを使用する方法についてより具体的に示唆し、あなたの "非効率的な"定義は何か、それは非常に広い質問のようです。 – musefan

+0

@musefanはい、私はabt C++を話しています。 、私はそれを忘れてしまった。 –

答えて

1

私はそれが重要であると思う。さらに重要な要素があります。

私は開始の前提を疑問視します:

2Dベクトルは時々、私たちはより良い抽象化のための純粋な速さをトレードオフ

非効率的です。 std::stringクラスは、未処理のバイトまたは文字配列と比較して、いくつかの尺度で非効率的であると考えられますが、私はまだそれを使用します。

広範な声明を心配するのをやめ、ユースケースに重点を置くと、より良いケースになります。

私が知っている2D配列の最も一般的なアプリケーションは、ベクトル、行列、線形代数です。その問題には、基礎となるデータ構造の選択よりもはるかに重要な要素があります。

C++はオブジェクト指向言語なので、インタフェースから始め、ベクトルと配列を使った実装を作ることで簡単に解決できます。意味のあるデータセットと測定値に対してそれらをテストします。

+0

返事をありがとう。実際に私はいくつかの行列アルゴリズムをテストしています。私の個人的なテストのために、速度はそんなに重要ではない。しかし、私はいつか私がいつも同じことを大きなプロジェクトでやる必要があるのか​​どうかと思っています。たとえば単純な行列乗算を考えてみましょう。 –

+0

スパース性、並列化、および抽象化権の取得についてもっと心配する必要があります。ベクトルと配列の間でデータを選択することは少なくなります。購入分析とビルド分析を行ったことがありますか?なぜあなた自身の線形代数ライブラリを書くのですか? – duffymo

+0

こんにちは、私はアルゴリズムについての本を読んでおり、擬似コードのいくつかをテストしたいと思います。私は仕事で似たような問題は出ませんでしたが、変数のサイズが上がった場合に2次元配列で実装すればかなり高価になるかどうかは疑問です。 –