2017-06-18 9 views
-4

は、私は、2D NによってMの任意のサイズのベクター、3D std :: vectorsのサイズを取得するにはどうすればよいですか?

を持っている場合、私はmyVector.size()

介して行の要素数、Mを得ることができることを知っていると私は、このようにすることができ列内の要素の数を取得し、myVectorを介してN [0] .size()

Iはベクトル<ベクトル別名2次元ベクトルのベクトル、<ベクトルを有する場合は<ダブル>>> myVector、大きさKを言いますMによってNによって、どのように私はサイズK、M、Nを得ることができますか?

+1

C++の外にステップします。私は言いましょう:3Dベクトルは次のようなものです:struct vect3d {float x、y、z; };あなたは2次元マトリックスの配列にもっと近いものを持っていますが、正しく定義されていません。あなたは行と列を話しているので、私の仮定は正しいと思います。実際、あなたが "2dベクトル"(実際に行列ですか?)と呼ばれるものであっても、なぜこの "モンスター"が必要なのかを明らかにする必要があるという事実に加えて、ベクトル<ベクトル>の定義は、の列はmyVector [0] .size()です。すべての "列"(あなたの用語を使用しています)は異なるサイズにすることができます。 –

+0

私はクラスタリング分析を実行したいので、各クラスタは行列を表しますが、必ずしも同じ次元ではないので集合的にそれらのクラスターの集合を参照するには、それらを格納するためにベクトル<ベクトル<ベクトル< double>>行列 –

+0

私はまだstd :: vectorに依存するかもしれない行列クラスを作成しますが、少なくとも、固定ディメンション(一度作成されたもの)であると思われるものへの誤ったアクセスを避けるために、それらへのアクセスを制御できます。ベクトルのベクトルのプレーンベクトルは、問題の原因にすぎません。私はそれを避けるようにします。これが役立つことを願っています。行列の型をとった後、ベクトルは私にはうまく聞こえます –

答えて

0

これは私のために動作しますが、それは私はこれが役に立てば幸い15.

vector< vector< vector<int> > > vec; 
for (int i = 0; i < 5; i++) { 
    vector< vector<int> > row; 
    for (int j = 0; j < 10; j++) { 
     vector<int> high; 
     for (int m = 0; m < 15; m++) { 
      high.push_back(i * j * m); 
     } 
     row.push_back(high); 
    } 
    vec.push_back(row); 
} 

cout << vec[0][0].size() << endl; 
+0

3DマトリックスがJでMであり、それらのサイズを得るためには、vec.size()、vec [0] .size()、vec [0] [0] .size()はそれぞれ? –

+0

これは解決策であり、私は最初に試してみます。 –

0

を印刷します。

#include <iostream> 
#include <vector> 

using std::vector; 

int main() 
{ 
    vector<vector<int> > k{{1,2}, {1,2}, {1,2}}; 
    vector<vector<vector<int> > > k3; 

    for(int i = 0; i < 4; ++i) 
     k3.push_back(k); 


    // Think of a 3D vector as an array made of K matrices N x M ... 
    // This will work if the 3D vector is made out of 2D matrix of same dimensions.. 
    int K = k3.size(); // number of matrices 
    int N = k3[0].size(); // number of rows for each matrix 
    int M = k3[0][0].size(); // number of lines for each matrix 

    std::cout << " k = " << K << " n = " << N << " m = " << M << std::endl; 
    return 0; 
} 
関連する問題