vectorの使用方法の詳細-一次元の場合

6922 ワード

[転載]http://m.jb51.net/article/44231.htm
vectorはベクトルタイプで、いくつかの整数のような多くのタイプのデータを収容できるので、コンテナと呼ばれています.本稿では、使用方法について説明します.vectorはC++STLの重要なメンバーであり、ヘッダファイルを含める必要があります.
#include;

一、vectorの初期化:以下のように5つの方法があり得る.
(1) vector a(10);//10個の整数要素のベクトル(カッコ内は要素タイプ名であり、任意の合法的なデータ型であってもよい)が定義されていますが、初期値は与えられず、その値は不確定です.(2)vector a(10,1);//10個の整数要素のベクトルを定義し、各要素の初期値を1(3)vectora(b)とする.//bベクトルでaベクトルを作成し、全体的な複製性付与(4)vectora(b.begin()、b.begin+3);//a値は、bの0番目から2番目(合計3つ)の要素(5)int b[7]={1,2,3,4,5,9,8}と定義される.vector a(b,b+7);//配列から初期値を取得
二、vectorオブジェクトのいくつかの重要な操作を例に挙げて説明する.
(1)a.assign(b.begin(), b.begin()+3);//bはベクトルであり、bの0~2つの要素からなるベクトルをa(2)a.assign(4,2)に与える.//aに4つの要素しか含まれず、各要素は2(3)a.front()//aの最初の要素(4)a.back();//を返します.aの最後の要素(5)a[i];//を返します.aのi番目の要素を返し、a[i]が(6)a.clear()/aの要素(7)a.empty();//aが空であるか否かを判断し、空でなければtureを返し、空でなければfalse(8)a.push_を返すback(5);//aの最後のベクトルの後に要素を挿入し、その値は5(9)a.pop_である.back();//aベクトルの最後の要素(10)a.begin();//を削除するaの最初の要素を指すポインタ(11)a.end()/aの最後の要素を指す次の要素のポインタ(12)a.erase(a.begin()+1,a.begin()+3)を返します.//削除aの1番目(0番目から)から2番目の要素、すなわち削除された要素はa.begin()+1からa.begin()+3(それを含まない)(13)a.insert(a.begin()+1,5);//aの1番目の要素(0番目から)の位置に数値5を挿入します.例えばaは1,2,3,4で、要素を挿入した後は1,5,2,3,4(14)a.insert(a.begin()+1,3,5)//aの1番目の要素(0番目から)の位置に3つの数を挿入し、その値はすべて5(15)a.insert(a.begin()+1,b+3,b+6)//bは配列であり、aの1番目の要素(0番目から)の位置にbの3番目の要素から5番目の要素(b+6を含まない)を挿入する.例えば、bは1,2,3,4,5,9,8であり、要素を挿入した後は1,4,5,9,2,3,4,5,8(16)a.size()/aの要素の数を返します.(17)a.capacity();//メモリに格納できるa要素の合計数(18)a.rezize(10)を返します.//aの既存要素の個数を10個に調整し、多ければ削除し、少なければ補完し、その値はランダム(19)a.rezize(10,2)//aの既存要素の個数を10個に調整し、多ければ削除し、少なければ補完し、その値は2(20)a.reserve(100);//aの容量(capacity)を100に拡張し、すなわちa.capacity()をテストする.の場合の戻り値は100である.この操作は、メモリの複数回の容量拡張操作を回避するため、aに大量のデータを追加する必要がある場合にのみ意味がある(aの容量が不足するとコンピュータが自動的に拡張し、もちろん性能が低下する)(21)a.swap(b);bはベクトルで、a中の元素とb中の元素を全体的に交換する(22)a==b;//bはベクトルであり,ベクトルの比較操作は!=,>=,<=,>,<
三、vectorに順次アクセスするいくつかの方法を例に挙げて説明する.
1.ベクトルaに要素を追加する
vector<int> a;
for(int i=0;i<10;i++)
a.push_back(i);

2、配列から要素を選択してベクトルに追加することもできます
int a[6]={1,2,3,4,5,6};
vector<int> b;
for(int i=1;i<=4;i++)
b.push_back(a[i]);

3、既存のベクトルから要素を選択してベクトルに追加することもできます
int a[6]={1,2,3,4,5,6};
vector<int> b;
vector<int> c(a,a+4);
for(vector<int>::iterator it=c.begin();it

4、ファイルから要素を読み込んでベクトルに追加することもできます
ifstream in("data.txt");
vector<int> a;
for(int i; in>>i)
a.push_back(i);

5、ベクトルから元素1を読み取る)、【誤区】
vector<int> a;
for(int i=0;i<10;i++)
a[i]=i;

//このやり方も似たようなやり方も間違っています.最初は私もこのような間違いを犯したことがありますが、後に発見しました.下付き文字はすでに存在する要素を取得するためにしか使用できませんが、現在のa[i]は空のオブジェクトです.
2)、下付きで読み取る
int a[6]={1,2,3,4,5,6};
vector<int> b(a,a+4);
for(int i=0;i<=b.size()-1;i++)
cout<" ";

3)、遍歴器による読み取り
int a[6]={1,2,3,4,5,6};
vector<int> b(a,a+4);
for(vector<int>::iterator it=b.begin();it!=b.end();it++)
cout<" ";

四、いくつかの重要なアルゴリズム、使用時にヘッダファイルを含む必要がある
#include

(1)sort(a.begin(),a.end());//a中のa.begin()からa.end()までの要素を小さいものから大きいものに並べる(2)reverse(a.begin()、a.end()//a中のa.begin()からa.end()までの要素を逆さまに配置しますが、a中の要素が1,3,2,4のように配列しません.逆さまに4,2,3,1(3)copy(a.begin()、a.end()、b.begin()+1);//aのa.begin()からa.end()までの要素をbにコピーし、b.begin()+1の位置(それを含む)からコピーし、元の要素(4)find(a.begin()、a.end()、10)を上書きします.//aのa.begin()からa.end()までの要素で10を検索し、ベクトル内の位置を返す場合
五、MSDN Libraryのダウンロードを提案する
msdn i tell youの上に、最新のcnをダウンロードしますmsdn_library_2007_06_dvd_x13-70482.インストールが完了すると、電子書籍のように、上のAPI関数、vector methodかstack methodかなどを検索できます.とても便利です.