1 Dと2 Dベクトルvectorの使用

3344 ワード


前の段落の間にカメラの標定を勉強していたとき、よく2次元ベクトルに出会って、多くのブログや関連書籍を調べて、本では1次元ベクトルしか言及していませんでしたが、2次元ベクトルについては紹介していません.ネット上のブログの多くも一知半解で、ざらざらしていて、難解です.今日はいくつかの良い博文の中で、また勉強して、いくつかの収穫は悟って、記録をして、後で自分の調べと勉強を便利にします.
ベクトル(vector)は、プログラムの実行時に長さを変更(増減)できる配列と見なすことができる.
  • 初期化ベクトル
  •      vector a ;                                //    int   a
         vector a(10) ;                            //         10   
         vector a(10, 1) ;                         //         10      1   
         vector b(a) ;                             //      a     b
         vector b(a.begin(), a.begin()+3) ;        // a     0   2 ( 3 )    b    

    配列でベクトルを初期化することもできます
         int n[] = {1, 2, 3, 4, 5} ;
         vector a(n, n+5) ;              //   n  5       a   
         vector a(&n[1], &n[4]) ;        // n[1] - n[4]          a   

        2. ベクトル要素の出力とアクセス
    #include
    #include
    using namespace std ;
    
    int main()
    {
        vector a(10, 0) ;      //   10   0   a
    
        //           
        cin >>a[2] ;
        cin >>a[5] ;
        cin >>a[6] ;
    
        //    
        int i ;
        for(i=0; i

       3.ベクトルの基本操作
    1>. a.size()                 //          
    
    
    2>. a.empty()                //        
    
    
    3>. a.clear()                //        
    
    
    4>.   
            a = b ;            // b     a   
    
    
    5>.   
               ==、!=、>、>=、.    - insert
            ①、 a.insert(a.begin(), 1000);            // 1000     a      
            
            ②、 a.insert(a.begin(), 3, 1000) ;        // 1000            0-2 ( 3   )
            
            ③、 vector a(5, 1) ;
                vector b(10) ;
                b.insert(b.begin(), a.begin(), a.end()) ;     // a.begin(), a.end()          b.begin() 
    
    
    7>.    - erase
            ①、 b.erase(b.begin()) ;                     //          
            ②、 b.erase(b.begin(), b.begin()+3) ;        // (b.begin(), b.begin()+3)       
    
    
    8>.    - swap
            b.swap(a) ;            //a   b      

       4. 2 Dベクトル
    ベクトルの各要素がベクトルである場合は、次のように2 Dベクトルと呼ばれます.
    vector> b(3, vector(4));        //    3*4 int     

    3つの要素を含み、各要素は4つのint型要素のベクトルを含む2次元ベクトルbが構築される.コンパイラはvectorのコンストラクション関数構築オブジェクトbを2回呼び出し、最初の呼び出しコンストラクション関数は4つの0を含む無名のvectorオブジェクトを構築した.
    [0]
    [1]
    [2]
    [3]
    0
    0
    0
    0
    コンストラクション関数を2回目に呼び出し、この無名ベクトルを初期値として3つの要素を初期化します.結果は次のとおりです.
    b
    [0]
    [1]
    [2]
    [3]
    [0]
    0
    0
    0
    0
    [1]
    0
    0
    0
    0
    [2]
    0
    0
    0
    0
    b[i]は、i(i=0,1,2)行目の要素からなるベクトルを表す.b.size()の値は3,b[0].size()の値は4です.
        vector< vector > b(10, vector(5, 0)) ;
    
        //         
        cin>>b[1][1] ;
        cin>>b[2][2] ;
        cin>>b[3][3];
    
        //    
        int m, n ;
        for(m=0; m < b.size(); m++)           //b.size()        
        {
            for(n=0; n < b[m].size(); n++)    //              
                cout << b[m][n] << " " ;
            cout << "
    " ; }

     
    このブログの参考は以下の通りです.
    c++ベースのベクトルVector
    vectorによる2 Dベクトルの実装