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ベクトルの実装