C++STLのvector用法まとめ
13120 ワード
普段よく使うvectorの使い方をまとめてみましょう.初期化
2 2 D配列初期化
遍歴
逆順ループ
容器長
コンテナの最初の要素、最後の要素を取得
は空と判断し、1は空、0は空ではない
エンドプラグ/イジェクト
挿入
マージ
削除
クリア
存在するか否かを判断する
ソート
二次ソート
交換
vectorメソッドテーブルhttps://github.com/huihut/interview/tree/master/STL#vector
方法
意味
vector
コンストラクタ
~vector
コンストラクション関数、コンテナオブジェクトの破棄
operator=
コンテナに新しいコンテンツを割り当て、現在のコンテンツを置き換え、サイズを変更します.
begin
コンテナ内の最初の要素を指す反復器を返します.
end
コンテナ内の最後の要素の後を指す理論要素の反復器を返します.
rbegin
コンテナ内の最後の要素を指す逆反復器を返します.
rend
最初の要素の前の理論要素を指す逆反復器を返します.
cbegin
コンテナ内の最初の要素を指す定数反復器(const_iterator)を返します.
cend
容器内の最後の要素の後を指す理論要素の定数反復器(const_iterator)を返します.
crbegin
コンテナ内の最後の要素を指す定数逆反復器(const_reverse_iterator)を返します.
crend
コンテナ内の最初の要素を指す前の理論要素の定数逆反復器(const_reverse_iterator)を返します.
size
コンテナ内の要素の数を返します.
max_size
コンテナに収容できる最大要素数を返します.
resize
n(パラメータ)個の要素を含むようにコンテナのサイズを調整します.
capacity
現在vectorに割り当てられているストレージ領域(容量)のサイズを返します.
empty
戻るvectorが空かどうか
reserve
要求vector容量は少なくともn(パラメータ)個の要素を含むのに十分である
shrink_to_fit
コンテナのsize(要素数)に適応するためにcapacity(容量)を小さくする必要があります.
operator[]
コンテナ内のn番目の位置の要素の参照を返します.
at
コンテナ内のn番目の位置の要素の参照を返します.
front
コンテナ内の最初の要素への参照を返します.
back
コンテナ内の最後の要素への参照を返します.
data
コンテナ内の最初の要素を指すポインタを返します.
assign
新しいコンテンツをvectorに割り当て、現在のコンテンツを置き換え、sizeを変更します.
push_back
コンテナの最後の要素の後に新しい要素を追加
pop_back
コンテナの最後の要素を削除し、コンテナsizeを効果的に1つ減らします.
insert
指定した位置のエレメントの前に新しいエレメントを挿入することでコンテナを拡張し、エレメントを挿入する数でコンテナのサイズを効果的に増やします.
erase
vectorから単一の要素(position)または一連の要素([first,last])を削除すると、除去された要素の数が効果的に減少し、容器のサイズが破壊されます.
swap
x(パラメータ)のコンテンツによってコンテナのコンテンツが交換され、xは別のタイプが同じでsizeが異なる可能性のあるvectorオブジェクトである
clear
vectorからすべての要素(破棄された)を削除し、sizeが0のコンテナを残します.
emplace
position(パラメータ)位置に新しい要素args(パラメータ)を挿入することでコンテナを拡張
emplace_back
vectorの最後に新しい要素を挿入し、現在の最後の要素の直後に挿入します.
get_allocator
vectorに関連付けられたコンストラクタオブジェクトのコピーを返します
swap(vector)
コンテナx(パラメータ)の内容は、コンテナy(パラメータ)の内容と交換されます.サイズは異なる場合がありますが、両方のコンテナオブジェクトは同じタイプ(同じテンプレートパラメータ)でなければなりません.
relational operators (vector)
vectorA>vectorBのような形をします.各要素のサイズ関係を比較
int a[3] = {10, 20, 30};
vector<int> v1; //{}
vector<int> v2(3); //{0, 0, 0}
vector<int> v3 {1, 2, 3, 4, 5}; //vector v3 = {1, 2, 3, 4, 5};
vector<int> v4(3,10); //{10, 10, 10}
vector<int> v5 = v3; //vector v5(v3);
vector<int> v6(v3.begin()+1, v3.end()); //vector v6(&a[0], &a[3]);
//{{}}
vectorint>> vec1;
//1 1 1
//1 1 1
vectorint>> vec2(2, vector<int>(3,1));
//1 1 1
//2 3 4
vectorint>> vec3 = {{1, 1, 1},{2, 3, 4}};
for(int i = 0; i < v3.size(); ++i){
cout << v3[i] << " ";
}
for(vector<int>::iterator it = v3.begin(); it != v3.end(); it++){
cout << *it << " ";
}
for(auto i:v3){
cout << i << " ";
}
for (auto it = v5.rbegin(); it != v5.rend(); it++){
cout << *it << " ";
}
v3.size();
v3.front();
v3.back();
v3.empty();
//v1{}
v1.push_back(1); //{1}
v1.push_back(2); //{1, 2}
v1.push_back(3); //{1, 2, 3}
v1.pop_back(); //{1, 2}
v1.pop_back(); //{1}
v1.pop_back(); //{}
//v3{1, 2, 3, 4, 5}
v3.insert(v3.begin()+1, 0); //{1, 2, 3, 4, 5}->{1, 0, 2, 3, 4, 5}
v3.insert(v3.end(), 0); //{1, 0, 2, 3, 4, 5}->{1, 0, 2, 3, 4, 5, 0}
v3.insert(v3.begin(), v4.begin(), v4.end()); //{1, 0, 2, 3, 4, 5, 0}->{10, 10, 10, 1, 0, 2, 3, 4, 5, 0}
//v2{0, 0, 0} v4{10, 10, 10}
v2.insert(v2.end(), v4.begin(), v4.end());//{0, 0, 0}->{0, 0, 0, 10, 10, 10}
v3.erase(v3.begin()+4); //{10, 10, 10, 1, 0, 2, 3, 4, 5, 0}->{10, 10, 10, 1, 2, 3, 4, 5, 0}
//erase() , ,
//*v3.erase(v3.end()-1)=0
v3.erase(v3.end()-1); //{10, 10, 10, 1, 2, 3, 4, 5, 0}->{10, 10, 10, 1, 2, 3, 4, 5}
v3.erase(v3.begin(), v3.begin()+3); //{10, 10, 10, 1, 2, 3, 4, 5}->{1, 2, 3, 4, 5}
v2.clear(); //{0, 0, 0, 10, 10, 10}->{}
//#include find();
vector<int>::iterator it = find(v3.begin(), v3.end(), 0);
if(it != v3.end()){
//find it
}
else{
//not found
}
//
sort(v3.begin(), v3.end());// sort(v3.begin(), v3.end(), less());
//
//#include greater() , less()
sort(v3.begin(), v3.end(), greater<int>());
//
bool complare(int a,int b)
{
return a>b;
}
sort(v3.begin(), v3.end(), complare);
bool complare(pair<int, int> l,pair<int, int> r)
{
return l.first != r.first ? l.first < r.first : l.second > r.second;
}
// ,
vectorint, int>> vp{{1,1},{1,2},{2,2},{2,3},{3,3}};//{{1,1},{1,2},{2,2},{2,3},{3,3}}->{{1,2},{1,1},{2,3},{2,2},{3,3}}
sort(vp.begin(), vp.end(), complare);
//vector.swap(v)
v1.swap(v3); // v1:{}->{5,4,3,2,1}, v3:{5,4,3,2,1}->{}
swap(v1[0], v1[1]);// v1:{5,4,3,2,1}->{4,5,3,2,1}
vectorメソッドテーブルhttps://github.com/huihut/interview/tree/master/STL#vector
方法
意味
vector
コンストラクタ
~vector
コンストラクション関数、コンテナオブジェクトの破棄
operator=
コンテナに新しいコンテンツを割り当て、現在のコンテンツを置き換え、サイズを変更します.
begin
コンテナ内の最初の要素を指す反復器を返します.
end
コンテナ内の最後の要素の後を指す理論要素の反復器を返します.
rbegin
コンテナ内の最後の要素を指す逆反復器を返します.
rend
最初の要素の前の理論要素を指す逆反復器を返します.
cbegin
コンテナ内の最初の要素を指す定数反復器(const_iterator)を返します.
cend
容器内の最後の要素の後を指す理論要素の定数反復器(const_iterator)を返します.
crbegin
コンテナ内の最後の要素を指す定数逆反復器(const_reverse_iterator)を返します.
crend
コンテナ内の最初の要素を指す前の理論要素の定数逆反復器(const_reverse_iterator)を返します.
size
コンテナ内の要素の数を返します.
max_size
コンテナに収容できる最大要素数を返します.
resize
n(パラメータ)個の要素を含むようにコンテナのサイズを調整します.
capacity
現在vectorに割り当てられているストレージ領域(容量)のサイズを返します.
empty
戻るvectorが空かどうか
reserve
要求vector容量は少なくともn(パラメータ)個の要素を含むのに十分である
shrink_to_fit
コンテナのsize(要素数)に適応するためにcapacity(容量)を小さくする必要があります.
operator[]
コンテナ内のn番目の位置の要素の参照を返します.
at
コンテナ内のn番目の位置の要素の参照を返します.
front
コンテナ内の最初の要素への参照を返します.
back
コンテナ内の最後の要素への参照を返します.
data
コンテナ内の最初の要素を指すポインタを返します.
assign
新しいコンテンツをvectorに割り当て、現在のコンテンツを置き換え、sizeを変更します.
push_back
コンテナの最後の要素の後に新しい要素を追加
pop_back
コンテナの最後の要素を削除し、コンテナsizeを効果的に1つ減らします.
insert
指定した位置のエレメントの前に新しいエレメントを挿入することでコンテナを拡張し、エレメントを挿入する数でコンテナのサイズを効果的に増やします.
erase
vectorから単一の要素(position)または一連の要素([first,last])を削除すると、除去された要素の数が効果的に減少し、容器のサイズが破壊されます.
swap
x(パラメータ)のコンテンツによってコンテナのコンテンツが交換され、xは別のタイプが同じでsizeが異なる可能性のあるvectorオブジェクトである
clear
vectorからすべての要素(破棄された)を削除し、sizeが0のコンテナを残します.
emplace
position(パラメータ)位置に新しい要素args(パラメータ)を挿入することでコンテナを拡張
emplace_back
vectorの最後に新しい要素を挿入し、現在の最後の要素の直後に挿入します.
get_allocator
vectorに関連付けられたコンストラクタオブジェクトのコピーを返します
swap(vector)
コンテナx(パラメータ)の内容は、コンテナy(パラメータ)の内容と交換されます.サイズは異なる場合がありますが、両方のコンテナオブジェクトは同じタイプ(同じテンプレートパラメータ)でなければなりません.
relational operators (vector)
vectorA>vectorBのような形をします.各要素のサイズ関係を比較