| cppreference.com -> C++ ベクタ -> 詳細 |
vector(); vector( size_type size ); vector( size_type num, const TYPE &val ); vector( const vector &from ); vector( input_iterator start, input_iterator end ); |
C++ ベクタは以下のいずれかの引数を伴って構築される:
vector<int> v1( 5, 42 );
v1 == v2 v1 != v2 v1 <= v2 v1 >= v2 v1 < v2 v1 > v2 v[] |
C++ ベクタは標準演算子 ==, !=, <=, >=, <, と > によって比較できる。 ベクタの個々の要素は [] 演算子によって調べられる。
二つのベクタは等しくなる条件は次の通り。
void assign( input_iterator start, input_iterator end ); void assign( size_type num, const TYPE &val ); |
assign() 関数はベクタに対して start から end までの値、 もしくは val の num 個の複製を与える。 この関数は、ベクタの以前の内容を破壊する。
TYPE at( size_type pos ); |
at() 関数は、ベクタの位置 pos にある要素への参照を返す。 位置 pos が有効な範囲外にあるときは out_of_range 例外を送出する。 at() 関数は [] 演算子よりも安全である、 なぜならそれはベクタ境界の外部にある項目を参照することがないためだ。 例えば、以下のコードを考える:
vector<int> v( 5, 1 );
for( int i = 0; i < 10; i++ ) {
cout << "Element " << i << " is " << v[i] << endl;
}
このコードはベクタ末尾を超過し、潜在的に危険な結果をもたらす。 以下のコードは遙かに安全であろう:
vector<int> v( 5, 1 );
for( int i = 0; i < 10; i++ ) {
cout << "Element " << i << " is " << v.at(i) << endl;
}
メモリから無意味な値を読み出そうと試みる代わりに、 at() 関数はベクタを超過していることを理解して例外を送出するだろう。
関連項:
TYPE back(); |
back() 関数はベクタの最終要素への参照を返す。例:
vector<int> v;
for( int i = 0; i < 5; i++ ) {
v.push_back(i);
}
cout << "The first element is " << v.front()
<< " and the last element is " << v.back() << endl;
このコードは以下の出力を生成する:
The first element is 0 and the last element is 4関連項:
iterator begin(); |
begin() 関数はベクタの先頭を指す イテレータ を返す。 例えば、次のコードはイテレータを用いてベクタ中の全要素を表示している:
vector<int> v1( 5, 789 ); vector<int>::iterator it; for( it = v1.begin(); it != v1.end(); it++ ) cout << *it << endl;関連項:
size_type capacity(); |
capacity() 関数はベクタが記憶域を確保し直す必要なしに保持できる要素数を返す。
void clear(); |
clear() 関数はベクタの全要素を削除する。
bool empty(); |
empty() 関数はベクタが要素を持っていないときに true を返し、 そうでないときに false を返す。 例えば、以下のコードは与えられたベクタをクリアし、その内容を逆順で表示する:
vector<int> v;
for( int i = 0; i < 5; i++ ) {
v.push_back(i);
}
while( !v.empty() ) {
cout << v.back() << endl;
v.pop_back();
}
関連項:
iterator end(); |
end() 関数はベクタの末尾を指す イテレータ を返す。 ベクタの最終要素にアクセスするは、イテレータをデクリメントする必要があることに注意。
関連項:
iterator erase( iterator pos ); iterator erase( iterator start, iterator end ); |
erase() 関数は位置 pos にある要素、 もしくは start とend の間にある要素を削除する。 戻り値は、削除された最終要素の直後を指す イテレータ である。 例:
// ベクタを作成し、アルファベットの先頭 10 文字を読み込む。
vector<char> alphaVector;
for( int i=0; i < 10; i++ )
alphaVector.push_back( i + 65 );
int size = alphaVector.size();
vector<char>::iterator startIterator;
vector<char>::iterator tempIterator;
for( int i=0; i < size; i++ ) {
startIterator = alphaVector.begin();
alphaVector.erase( startIterator );
// ベクタを表示する
for( tempIterator = alphaVector.begin(); tempIterator != alphaVector.end(); tempIterator++ )
cout << *tempIterator;
cout << endl;
}
このコードは以下の出力を表示する:
BCDEFGHIJ CDEFGHIJ DEFGHIJ EFGHIJ FGHIJ GHIJ HIJ IJ J関連項:
TYPE front(); |
front() 関数はベクタの先頭要素への参照を返す。
関連項:
allocator_type get_allocator(); |
get_allocator() 関数はベクタのアロケータを返す。
iterator insert( iterator pos, const TYPE &val ); void insert( iterator pos, size_type num, const TYPE &val ); void insert( iterator pos, input_iterator start, input_iterator end ); |
insert() 関数は以下のいずれかの動作を行う:
// ベクタを作成し、アルファベットの先頭 10 文字を読み込む。 vector<char> alphaVector; for( int i=0; i < 10; i++ ) alphaVector.push_back( i + 65 ); // ベクタに 4 つの C を挿入する vector<char>::iterator theIterator = alphaVector.begin(); alphaVector.insert( theIterator, 4, 'C' ); // ベクタを表示する for( theIterator = alphaVector.begin(); theIterator != alphaVector.end(); theIterator++ ) cout << *theIterator;
このコードは以下の出力を表示する:
CCCCABCDEFGHIJ
size_type max_size(); |
max_size() 関数はベクタが保持できる最大要素数を返す。
void pop_back(); |
pop_back() 関数はベクタの最終要素を削除する。例:
vector<char> alphaVector;
for( int i=0; i < 10; i++ )
alphaVector.push_back( i + 65 );
int size = alphaVector.size();
vector<char>::iterator theIterator;
for( int i=0; i < size; i++ ) {
alphaVector.pop_back();
for( theIterator = alphaVector.begin(); theIterator != alphaVector.end(); theIterator++ )
cout << *theIterator;
cout << endl;
}
このコードは以下の出力を表示する:
ABCDEFGHI ABCDEFGH ABCDEFG ABCDEF ABCDE ABCD ABC AB A関連項:
void push_back( const TYPE &val ); |
push_back() 関数は val をベクタの末尾に追加する。
reverse_iterator rbegin(); |
rbegin() 関数はベクタ末尾を指すリバースイテレータ を返す。
reverse_iterator rend(); |
rend() はベクタ先頭を指すリバースイテレータ を返す。
void reserve( size_type size ); |
reserve() 関数はベクタが最小でも size 個の要素を保持できるようにする。
void resize( size_type size, TYPE val ); |
resize() 関数はベクタのサイズを size に変更し、 新規に追加された項目を val に設定する。
size_type size(); |
size() 関数はベクタ中の要素数を返す。
関連項:
void swap( vector &from ); |
swap() 関数はベクタの要素を from の要素と交換する。