C++STL vectorの勉強

2894 ワード

vectorは不定長配列であり、vectorは動的配列であり、要素が加わるにつれて、その内部メカニズムは自分で空間を拡張して新しい要素を収容し、vectorを使用する前に、対応するヘッダファイルとネーミングスペースを含まなければならない.
#include 
using namespace std;

typeがint,string,node(構造体)などであると仮定する
vectorv;//      
vectorv;//     string      
vectorv;//        
vectorv;//     type   

2 D配列も定義できます.
vectorv[maxn];

ここでは、反復器(iterator)という概念を紹介します.
私は反復器に対してポインタの1種のパッケージと抽象を理解して、まるでc言語の中のポインタも1種のテンプレートに書いてプログラマーの使用を便利にするようです;
ここでは反復器の簡単な使用についてのみ説明します.
vector::iterator it;//        
for (it = v.begin(); it != v.end(); it++) {//             vector
    cout << *it << endl;
}
#include 
#include 
#include 
#include 
#include 
using namespace std;

int main() {
	vectorv;
	vector::iterator it;//        
	int a, n, m;
	cin >> n;
	for (int i = 0; i < n; i++) {
		cin >> a;
		v.push_back(a);//       
	}
	sort(v.begin(), v.end());//     sort    
	for (it = v.begin(); it != v.end(); it++) {//             vector
		cout << *it << endl;
	}
	for (int i = 0; i < v.size(); i++) {//           
		cout << v[i] << endl;
	}
	return 0;
}

vectorの基本操作をまとめます.
ここではvectorcで例として説明する.
1、容器の大きさ操作
c.max_size():戻りベクトルタイプの最大容量(2^30-1=0 x 3 FFFFFFF)
c.capacity():ベクトルが現在開いている空間サイズ(<=max_size、ベクトルの動的メモリ割り当てポリシーに関連)を返します.
c.size():ベクトル内の既存の要素の個数(<=capacity)を返します.
c.resize(n):ベクトルの長さをn要素を収容できるように調整します.
c.resize(n,x):ベクトルのサイズをnに変更し、すべての新しい要素の初期値をxに割り当てます.
c.empty():ベクトルが空の場合、真を返します.
2、要素の割り当て操作
c.assign(first,last):反復器first,lastで指定した範囲の要素をcにコピーします.
c.assign(num,val):valのnum部コピーでcを再設定します.
3、要素のアクセス操作
c.at(n):下付き演算子[]に等しく、ベクトル内の位置nの要素を返します.境界チェックがあるため、[]インデックスよりアクセスが安全です.
c.front():ベクトル内の最初の要素の参照を返します.
c.back():ベクトルの最後の要素の参照を返します.
c.begin():ベクトルの最初の要素の反復器を返します.
c.end():ベクトル内の最後の要素の次の位置を返す反復器で、終了カーソルとしてのみ使用され、参照は解除できません.
c.rbegin():容器の最後の要素を指す逆反復器を返します.
c.rend():コンテナの最初の要素の前の位置を指す逆反復器を返します.
4、要素の削除操作
c.pop_back():ベクトルの最後の要素を削除します.
c.clear():ベクトル内のすべての要素を削除します.
c.erase(iter):反復器iterが指す要素を削除し、削除された要素の後ろを指す反復器を返します.
c.erase(start,end):反復器start,endが指定した範囲内の要素を削除し、削除された要素セグメントの後ろを指す反復器を返します.
5、要素の挿入操作
c.push_back(x):xをベクトルの末尾に挿入します.
c.insert(iter,x):反復器iterが指す要素の前に値xの新しい要素を挿入し、新しい挿入要素を指す反復器を返します.
c.insert(iter,n,x):反復器iterが指す要素の前にn個の値がxの新しい要素を挿入し、voidを返す.
c.insert(iter,start,end):反復器startとendが指定した範囲内のすべての要素を反復器iterが指す要素に挿入する前にvoidを返します.
6、要素の交換操作
c.reverse():要素の順序を反転します.
c.swap(c 2):2つのベクトルの内容を交換し、cとc 2のタイプは同じでなければならない.