vector (STL/CLR)
このテンプレート クラスは、ランダム アクセス権を持つ要素の可変長シーケンスを制御するオブジェクトを表します。 コンテナー vector
を使用して、要素のシーケンスを連続するストレージ ブロックとして管理します。 ブロックは、必要に応じて拡大する配列として実装されます。
以降の説明では、GValue
は Value と同じですが、後者が ref 型の場合は Value^
となります。
構文
template<typename Value>
ref class vector
: public
System::ICloneable,
System::Collections::IEnumerable,
System::Collections::ICollection,
System::Collections::Generic::IEnumerable<GValue>,
System::Collections::Generic::ICollection<GValue>,
System::Collections::Generic::IList<GValue>,
Microsoft::VisualC::StlClr::IVector<GValue>
{ ..... };
パラメーター
Value
被制御シーケンス内の要素の型。
要件
ヘッダー:<cliext/vector>
名前空間: cliext
宣言
型の定義 | 説明 |
---|---|
vector::const_iterator (STL/CLR) | 被制御シーケンスの定数反復子の型です。 |
vector::const_reference (STL/CLR) | 要素への定数参照の型です。 |
vector::const_reverse_iterator (STL/CLR) | 被制御シーケンスの定数反転反復子の型です。 |
vector::difference_type (STL/CLR) | 2 つの要素間の距離を表す、符号付きの型です。 |
vector::generic_container (STL/CLR) | コンテナーのジェネリック インターフェイスの型です。 |
vector::generic_iterator (STL/CLR) | コンテナーのジェネリック インターフェイスの反復子の型です。 |
vector::generic_reverse_iterator (STL/CLR) | コンテナーのジェネリック インターフェイスの反転反復子の型です。 |
vector::generic_value (STL/CLR) | コンテナーのジェネリック インターフェイスの要素の型です。 |
vector::iterator (STL/CLR) | 被制御シーケンスの反復子の型です。 |
vector::reference (STL/CLR) | 要素への参照の型です。 |
vector::reverse_iterator (STL/CLR) | 被制御シーケンスの反転反復子の型です。 |
vector::size_type (STL/CLR) | 2 つの要素間の距離を表す、符号付きの型です。 |
vector::value_type (STL/CLR) | 要素の型。 |
メンバー関数 | 説明 |
---|---|
vector::assign (STL/CLR) | すべての要素を置換します。 |
vector::at (STL/CLR) | 指定した位置にある要素にアクセスします。 |
vector::back (STL/CLR) | 最後の要素にアクセスします。 |
vector::begin (STL/CLR) | 被制御シーケンスの先頭を指定します。 |
vector::capacity (STL/CLR) | コンテナーに割り当てられたストレージのサイズを報告します。 |
vector::clear (STL/CLR) | すべての要素を削除します。 |
vector::empty (STL/CLR) | 要素が存在しないかどうかをテストします。 |
vector::end (STL/CLR) | 被制御シーケンスの末尾を指定します。 |
vector::erase (STL/CLR) | 指定した位置にある要素を削除します。 |
vector::front (STL/CLR) | 最初の要素にアクセスします。 |
vector::insert (STL/CLR) | 指定した位置に要素を追加します。 |
vector::pop_back (STL/CLR) | 最後の要素を削除します。 |
vector::push_back (STL/CLR) | 新規に末尾の要素を追加します。 |
vector::rbegin (STL/CLR) | 反転被制御シーケンスの先頭を指定します。 |
vector::rend (STL/CLR) | 反転被制御シーケンスの末尾を指定します。 |
vector::reserve (STL/CLR) | コンテナーの最小増加容量を確保します。 |
vector::resize (STL/CLR) | 要素の数を変更します。 |
vector::size (STL/CLR) | 要素の数をカウントします。 |
vector::swap (STL/CLR) | 2 つのコンテナーのコンテンツを交換します。 |
vector::to_array (STL/CLR) | 被制御シーケンスを新しい配列にコピーします。 |
vector::vector (STL/CLR) | コンテナー オブジェクトを構築します。 |
プロパティ | 説明 |
---|---|
vector::back_item (STL/CLR) | 最後の要素にアクセスします。 |
vector::front_item (STL/CLR) | 最初の要素にアクセスします。 |
Operator | 説明 |
---|---|
vector::operator= (STL/CLR) | 被制御シーケンスを置き換えます。 |
vector::operator(STL/CLR) | 指定した位置にある要素にアクセスします。 |
operator!= (vector) (STL/CLR) | vector オブジェクトが別の vector オブジェクトと等しくないかどうかを判断します。 |
operator< (vector) (STL/CLR) | vector オブジェクトが別の vector オブジェクトより小さいかどうかを確認します。 |
operator<= (vector) (STL/CLR) | vector オブジェクトが別の vector オブジェクト以下かどうかを判断します。 |
operator== (vector) (STL/CLR) | vector オブジェクトが別の vector オブジェクトと等しいかどうかを判断します。 |
operator> (vector) (STL/CLR) | vector オブジェクトが別の vector オブジェクトより大きいかどうかを判断します。 |
operator>= (vector) (STL/CLR) | vector オブジェクトが別の vector オブジェクト以上かどうかを判断します。 |
インターフェイス
インターフェイス | 説明 |
---|---|
ICloneable | オブジェクトを複製します。 |
IEnumerable | 要素をシーケンス処理します。 |
ICollection | 要素のグループを維持します。 |
IEnumerable<T> | 型指定された要素をシーケンス処理します。 |
ICollection<T> | 型指定された要素のグループを維持します。 |
IList<T> | 型指定された要素の順序付けされたグループを維持します。 |
IVector<Value> | ジェネリック コンテナーを維持します。 |
解説
オブジェクトによる被制御シーケンスに対するストレージの割り当ておよび解放は、格納されている Value 要素の配列 (必要に応じて増加します) を介して行われます。 増加は、新しい要素を追加するコストが一定の時間に分散されるような方法で行われます。 つまり、被制御シーケンスの長さが長くなるにつれて、要素を末尾に追加するコストが平均で増加することはありません。 したがって、ベクターは、テンプレート クラス stack (STL/CLR) の基になるコンテナーに適しています。
vector
では、ランダムアクセス反復子がサポートされているため、要素を数値位置で直接参照できます。最初の (front) 要素である 0 から、最後の (back) 要素である size() - 1
までカウントします。 これは、ベクターがテンプレート クラス priority_queue (STL/CLR) の基になるコンテナーに適していることも意味します。
ベクター反復子は、関連付けられたベクター オブジェクトへのハンドルを、指定した要素の偏りと共に格納します。 反復子は、関連付けられているコンテナー オブジェクトでのみ使用できます。 ベクター要素の偏りは、その位置と同じです。
要素を挿入または消去すると、指定した位置に格納されている要素の値が変更されるため、反復子によって指定された値も変更される可能性があります。 (挿入前に穴を作成したり、消去後に穴を埋めたりするには、要素を上下にコピーする必要がある場合があります)。ただし、ベクター反復子は、そのバイアスが [0, size()]
範囲内にある限り有効なままです。 さらに、有効な反復子は逆参照でき、これを使用すると、指定した要素の値にアクセスしたり、値を変更したりできます (その偏りが size()
と等しくない場合のみ)。
要素を消去または削除すると、格納されている値のデストラクターが呼び出されます。 コンテナーを破棄すると、すべての要素が消去されます。 したがって、要素型が ref クラスのコンテナーでは、コンテナーよりも有効期間が長い要素はありません。 ただし、ハンドルのコンテナーはその要素を破棄しないことに注意してください。
メンバー
vector::assign (STL/CLR)
すべての要素を置換します。
構文
void assign(size_type count, value_type val);
template<typename InIt>
void assign(InIt first, InIt last);
void assign(System::Collections::Generic::IEnumerable<Value>^ right);
パラメーター
count
挿入する要素の数。
first
挿入する範囲の先頭。
last
挿入する範囲の末尾。
right
挿入する列挙型。
val
挿入する要素の値。
解説
最初のメンバー関数は、被制御シーケンスを、値 val の count 個の要素の繰り返しで置き換えます。 これを使って、すべて同じ値を持つ要素をコンテナーに格納します。
InIt
が整数型である場合、2 番目のメンバー関数は assign((size_type)first, (value_type)last)
と同じように動作します。 それ以外の場合は、被制御シーケンスをシーケンス [first
, last
) で置き換えます。 これを使用して、被制御シーケンスを別のシーケンスにコピーします。
3 番目のメンバー関数は、被制御シーケンスを列挙子 right によって指定されたシーケンスに置き換えます。 これを使用して、被制御シーケンスを列挙子によって記述されたシーケンスのコピーにします。
例
// cliext_vector_assign.cpp
// compile with: /clr
#include <cliext/vector>
int main()
{
cliext::vector<wchar_t> c1;
c1.push_back(L'a');
c1.push_back(L'b');
c1.push_back(L'c');
// assign a repetition of values
cliext::vector<wchar_t> c2;
c2.assign(6, L'x');
for each (wchar_t elem in c2)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// assign an iterator range
c2.assign(c1.begin(), c1.end() - 1);
for each (wchar_t elem in c2)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// assign an enumeration
c2.assign( // NOTE: cast is not needed
(System::Collections::Generic::IEnumerable<wchar_t>^)%c1);
for each (wchar_t elem in c2)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
return (0);
}
x x x x x x
a b
a b c
vector::at (STL/CLR)
指定した位置にある要素にアクセスします。
構文
reference at(size_type pos);
パラメーター
pos
アクセスする要素の位置。
解説
このメンバー関数は、位置 pos にある被制御シーケンスの要素への参照を返します。これを使用して、既知の位置を持つ要素の読み取りまたは書き込みを行います。
例
// cliext_vector_at.cpp
// compile with: /clr
#include <cliext/vector>
int main()
{
cliext::vector<wchar_t> c1;
c1.push_back(L'a');
c1.push_back(L'b');
c1.push_back(L'c');
// display contents " a b c" using at
for (int i = 0; i < c1.size(); ++i)
System::Console::Write("{0} ", c1.at(i));
System::Console::WriteLine();
// change an entry and redisplay
c1.at(1) = L'x';
for (int i = 0; i < c1.size(); ++i)
System::Console::Write("{0} ", c1[i]);
System::Console::WriteLine();
return (0);
}
a b c
a x c
vector::back (STL/CLR)
最後の要素にアクセスします。
構文
reference back();
解説
このメンバー関数は、被制御シーケンスの最後の要素への参照を返します。これを空にすることはできません。 最後の要素が存在することがわかっている場合は、それにアクセスするために使用します。
例
// cliext_vector_back.cpp
// compile with: /clr
#include <cliext/vector>
int main()
{
cliext::vector<wchar_t> c1;
c1.push_back(L'a');
c1.push_back(L'b');
c1.push_back(L'c');
// display initial contents " a b c"
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// inspect last item
System::Console::WriteLine("back() = {0}", c1.back());
// alter last item and reinspect
c1.back() = L'x';
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
return (0);
}
a b c
back() = c
a b x
vector::back_item (STL/CLR)
最後の要素にアクセスします。
構文
property value_type back_item;
解説
このプロパティは、被制御シーケンスの最後の要素 (これを空にすることはできません) にアクセスします。 これは、最後の要素が存在することがわかっている場合に、その読み取りまたは書き込みを行うために使用します。
例
// cliext_vector_back_item.cpp
// compile with: /clr
#include <cliext/vector>
int main()
{
cliext::vector<wchar_t> c1;
c1.push_back(L'a');
c1.push_back(L'b');
c1.push_back(L'c');
// display initial contents " a b c"
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// inspect last item
System::Console::WriteLine("back_item = {0}", c1.back_item);
// alter last item and reinspect
c1.back_item = L'x';
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
return (0);
}
a b c
back_item = c
a b x
vector::begin (STL/CLR)
被制御シーケンスの先頭を指定します。
構文
iterator begin();
解説
このメンバー関数は、被制御シーケンスの最初の要素 (または空のシーケンスの末尾の次の位置) を指定するランダムアクセス反復子を返します。 これを使用して、被制御シーケンスの current
の先頭を指定する反復子を取得しますが、被制御シーケンスの長さが変わると状態が変化する可能性があります。
例
// cliext_vector_begin.cpp
// compile with: /clr
#include <cliext/vector>
int main()
{
cliext::vector<wchar_t> c1;
c1.push_back(L'a');
c1.push_back(L'b');
c1.push_back(L'c');
// display initial contents " a b c"
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// inspect first two items
cliext::vector<wchar_t>::iterator it = c1.begin();
System::Console::WriteLine("*begin() = {0}", *it);
System::Console::WriteLine("*++begin() = {0}", *++it);
// alter first two items and reinspect
*--it = L'x';
*++it = L'y';
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
return (0);
}
a b c
*begin() = a
*++begin() = b
x y c
vector::capacity (STL/CLR)
コンテナーに割り当てられたストレージのサイズを報告します。
構文
size_type capacity();
解説
このメンバー関数は、被制御シーケンスを保持するために現在割り当てられているストレージを返します (値は vector::size (STL/CLR)()
以上)。 これを使用して、被制御シーケンス用にストレージを再割り当てする前に、コンテナーの拡張量を決定します。
例
// cliext_vector_capacity.cpp
// compile with: /clr
#include <cliext/vector>
int main()
{
cliext::vector<wchar_t> c1;
c1.push_back(L'a');
c1.push_back(L'b');
c1.push_back(L'c');
// display initial contents " a b c"
for (int i = 0; i < c1.size(); ++i)
System::Console::Write("{0} ", c1.at(i));
System::Console::WriteLine();
// increase capacity
cliext::vector<wchar_t>::size_type cap = c1.capacity();
System::Console::WriteLine("capacity() = {0}, ok = {1}",
cap, c1.size() <= cap);
c1.reserve(cap + 5);
System::Console::WriteLine("capacity() = {0}, ok = {1}",
c1.capacity(), cap + 5 <= c1.capacity());
return (0);
}
a b c
capacity() = 4, ok = True
capacity() = 9, ok = True
vector::clear (STL/CLR)
すべての要素を削除します。
構文
void clear();
解説
メンバー関数は、実質的に vector::erase (STL/CLR)(
vector::begin (STL/CLR)(),
vector::end (STL/CLR)())
を呼び出します。 被制御シーケンスが空であることを確実にするために使います。
例
// cliext_vector_clear.cpp
// compile with: /clr
#include <cliext/vector>
int main()
{
cliext::vector<wchar_t> c1;
c1.push_back(L'a');
c1.push_back(L'b');
c1.push_back(L'c');
// display initial contents " a b c"
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// clear the container and reinspect
c1.clear();
System::Console::WriteLine("size() = {0}", c1.size());
// add elements and clear again
c1.push_back(L'a');
c1.push_back(L'b');
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
c1.clear();
System::Console::WriteLine("size() = {0}", c1.size());
return (0);
}
a b c
size() = 0
a b
size() = 0
vector::const_iterator (STL/CLR)
被制御シーケンスの定数反復子の型です。
構文
typedef T2 const_iterator;
解説
この型は、被制御シーケンスの定数ランダムアクセス反復子として使用できる未指定の T2
型のオブジェクトを表します。
例
// cliext_vector_const_iterator.cpp
// compile with: /clr
#include <cliext/vector>
int main()
{
cliext::vector<wchar_t> c1;
c1.push_back(L'a');
c1.push_back(L'b');
c1.push_back(L'c');
// display contents " a b c"
cliext::vector<wchar_t>::const_iterator cit = c1.begin();
for (; cit != c1.end(); ++cit)
System::Console::Write("{0} ", *cit);
System::Console::WriteLine();
return (0);
}
a b c
vector::const_reference (STL/CLR)
要素への定数参照の型です。
構文
typedef value_type% const_reference;
解説
この型は、要素への定数参照を表します。
例
// cliext_vector_const_reference.cpp
// compile with: /clr
#include <cliext/vector>
int main()
{
cliext::vector<wchar_t> c1;
c1.push_back(L'a');
c1.push_back(L'b');
c1.push_back(L'c');
// display initial contents " a b c"
cliext::vector<wchar_t>::const_iterator cit = c1.begin();
for (; cit != c1.end(); ++cit)
{ // get a const reference to an element
cliext::vector<wchar_t>::const_reference cref = *cit;
System::Console::Write("{0} ", cref);
}
System::Console::WriteLine();
return (0);
}
a b c
vector::const_reverse_iterator (STL/CLR)
被制御シーケンスの定数反転反復子の型です。
構文
typedef T4 const_reverse_iterator;
解説
この型は、被制御シーケンスの定数反転反復子として使用できる未指定の T4
型のオブジェクトを表します。
例
// cliext_vector_const_reverse_iterator.cpp
// compile with: /clr
#include <cliext/vector>
int main()
{
cliext::vector<wchar_t> c1;
c1.push_back(L'a');
c1.push_back(L'b');
c1.push_back(L'c');
// display contents " a b c" reversed
cliext::vector<wchar_t>::const_reverse_iterator crit = c1.rbegin();
cliext::vector<wchar_t>::const_reverse_iterator crend = c1.rend();
for (; crit != crend; ++crit)
System::Console::Write("{0} ", *crit);
System::Console::WriteLine();
return (0);
}
c b a
vector::difference_type (STL/CLR)
2 つの要素間の符号付きの距離を表す型です。
構文
typedef int difference_type;
解説
この型は、署名された要素の数を表します。
例
// cliext_vector_difference_type.cpp
// compile with: /clr
#include <cliext/vector>
int main()
{
cliext::vector<wchar_t> c1;
c1.push_back(L'a');
c1.push_back(L'b');
c1.push_back(L'c');
// display initial contents " a b c"
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// compute positive difference
cliext::vector<wchar_t>::difference_type diff = 0;
for (cliext::vector<wchar_t>::iterator it = c1.begin();
it != c1.end(); ++it) ++diff;
System::Console::WriteLine("end()-begin() = {0}", diff);
// compute negative difference
diff = 0;
for (cliext::vector<wchar_t>::iterator it = c1.end();
it != c1.begin(); --it) --diff;
System::Console::WriteLine("begin()-end() = {0}", diff);
return (0);
}
a b c
end()-begin() = 3
begin()-end() = -3
vector::empty (STL/CLR)
要素が存在しないかどうかをテストします。
構文
bool empty();
解説
このメンバー関数は、被制御シーケンスが空の場合に true を返します。 これは vector::size (STL/CLR)() == 0
と同じです。 これを使用して、ベクターが空かどうかをテストします。
例
// cliext_vector_empty.cpp
// compile with: /clr
#include <cliext/vector>
int main()
{
cliext::vector<wchar_t> c1;
c1.push_back(L'a');
c1.push_back(L'b');
c1.push_back(L'c');
// display initial contents " a b c"
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
System::Console::WriteLine("size() = {0}", c1.size());
System::Console::WriteLine("empty() = {0}", c1.empty());
// clear the container and reinspect
c1.clear();
System::Console::WriteLine("size() = {0}", c1.size());
System::Console::WriteLine("empty() = {0}", c1.empty());
return (0);
}
a b c
size() = 3
empty() = False
size() = 0
empty() = True
vector::end (STL/CLR)
被制御シーケンスの末尾を指定します。
構文
iterator end();
解説
このメンバー関数は、被制御シーケンスの末尾を越えたところを示すランダムアクセス反復子を返します。 これを使用して、被制御シーケンスの current
の末尾を指定する反復子を取得しますが、被制御シーケンスの長さが変わると状態が変わる可能性があります。
例
// cliext_vector_end.cpp
// compile with: /clr
#include <cliext/vector>
int main()
{
cliext::vector<wchar_t> c1;
c1.push_back(L'a');
c1.push_back(L'b');
c1.push_back(L'c');
// display initial contents " a b c"
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// inspect last two items
cliext::vector<wchar_t>::iterator it = c1.end();
--it;
System::Console::WriteLine("*-- --end() = {0}", *--it);
System::Console::WriteLine("*--end() = {0}", *++it);
// alter first two items and reinspect
*--it = L'x';
*++it = L'y';
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
return (0);
}
a b c
*-- --end() = b
*--end() = c
a x y
vector::erase (STL/CLR)
指定した位置にある要素を削除します。
構文
iterator erase(iterator where);
iterator erase(iterator first, iterator last);
パラメーター
first
消去する範囲の先頭。
last
消去する範囲の末尾。
where
消去する要素。
解説
1 番目のメンバー関数は、where によってポイントされている被制御シーケンスの要素を削除します。 1 つの要素を削除する場合に使います。
2 番目のメンバー関数は、範囲 [first
, last
) の被制御シーケンスの要素を削除します。 0 個以上の連続する要素を削除する場合に、これを使用します。
両方のメンバー関数により、削除された要素の後の最初の残存要素を指定する反復子が返されます。このような要素が存在しない場合は、vector::end (STL/CLR)()
が返されます。
要素を消去する場合、要素のコピー数は、消去の終わりとシーケンスの近端の間にある要素の数に比例します。 (シーケンスの両端で 1 つ以上の要素を消去すると、要素のコピーは行われません。)
例
// cliext_vector_erase.cpp
// compile with: /clr
#include <cliext/vector>
int main()
{
cliext::vector<wchar_t> c1;
c1.push_back(L'a');
c1.push_back(L'b');
c1.push_back(L'c');
// display initial contents " a b c"
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// erase an element and reinspect
System::Console::WriteLine("erase(begin()) = {0}",
*c1.erase(c1.begin()));
// add elements and display " b c d e"
c1.push_back(L'd');
c1.push_back(L'e');
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// erase all but end
cliext::vector<wchar_t>::iterator it = c1.end();
System::Console::WriteLine("erase(begin(), end()-1) = {0}",
*c1.erase(c1.begin(), --it));
System::Console::WriteLine("size() = {0}", c1.size());
return (0);
}
a b c
erase(begin()) = b
b c d e
erase(begin(), end()-1) = e
size() = 1
vector::front (STL/CLR)
最初の要素にアクセスします。
構文
reference front();
解説
このメンバー関数は、被制御シーケンスの最初の要素への参照を返します。被制御シーケンスを空にすることはできません。 これは、最初の要素が存在することがわかっている場合に、その読み取りまたは書き込みを行うために使用します。
例
// cliext_vector_front.cpp
// compile with: /clr
#include <cliext/vector>
int main()
{
cliext::vector<wchar_t> c1;
c1.push_back(L'a');
c1.push_back(L'b');
c1.push_back(L'c');
// display initial contents " a b c"
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// inspect first item
System::Console::WriteLine("front() = {0}", c1.front());
// alter first item and reinspect
c1.front() = L'x';
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
return (0);
}
a b c
front() = a
x b c
vector::front_item (STL/CLR)
最初の要素にアクセスします。
構文
property value_type front_item;
解説
このプロパティは、被制御シーケンスの最初の要素 (これを空にすることはできません) にアクセスします。 これは、最初の要素が存在することがわかっている場合に、その読み取りまたは書き込みを行うために使用します。
例
// cliext_vector_front_item.cpp
// compile with: /clr
#include <cliext/vector>
int main()
{
cliext::vector<wchar_t> c1;
c1.push_back(L'a');
c1.push_back(L'b');
c1.push_back(L'c');
// display initial contents " a b c"
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// inspect first item
System::Console::WriteLine("front_item = {0}", c1.front_item);
// alter first item and reinspect
c1.front_item = L'x';
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
return (0);
}
a b c
front_item = a
x b c
vector::generic_container (STL/CLR)
コンテナーのジェネリック インターフェイスの型です。
構文
typedef Microsoft::VisualC::StlClr::
IVector<generic_value>
generic_container;
解説
この型は、このテンプレート コンテナー クラスのジェネリック インターフェイスを表します。
例
// cliext_vector_generic_container.cpp
// compile with: /clr
#include <cliext/vector>
int main()
{
cliext::vector<wchar_t> c1;
c1.push_back(L'a');
c1.push_back(L'b');
c1.push_back(L'c');
// display contents " a b c"
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// construct a generic container
cliext::vector<wchar_t>::generic_container^ gc1 = %c1;
for each (wchar_t elem in gc1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// modify generic and display original
gc1->insert(gc1->end(), L'd');
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// modify original and display generic
c1.push_back(L'e');
System::Collections::IEnumerator^ enum1 =
gc1->GetEnumerator();
while (enum1->MoveNext())
System::Console::Write("{0} ", enum1->Current);
System::Console::WriteLine();
return (0);
}
a b c
a b c
a b c d
a b c d e
vector::generic_iterator (STL/CLR)
コンテナーのジェネリック インターフェイスで使用する反復子の型です。
構文
typedef Microsoft::VisualC::StlClr::Generic::
ContainerRandomAccessIterator<generic_value>
generic_iterator;
解説
この型は、このテンプレート コンテナー クラスのジェネリック インターフェイスで使用できるジェネリック反復子を表します。
例
// cliext_vector_generic_iterator.cpp
// compile with: /clr
#include <cliext/vector>
int main()
{
cliext::vector<wchar_t> c1;
c1.push_back(L'a');
c1.push_back(L'b');
c1.push_back(L'c');
// display contents " a b c"
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// construct a generic container
cliext::vector<wchar_t>::generic_container^ gc1 = %c1;
for each (wchar_t elem in gc1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// modify generic and display original
cliext::vector<wchar_t>::generic_iterator gcit = gc1->begin();
cliext::vector<wchar_t>::generic_value gcval = *gcit;
*++gcit = gcval;
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
return (0);
}
a b c
a b c
a a c
vector::generic_reverse_iterator (STL/CLR)
コンテナーのジェネリック インターフェイスで使用する反転反復子の型です。
構文
typedef Microsoft::VisualC::StlClr::Generic::
ReverseRandomAccessIterator<generic_value> generic_reverse_iterator;
解説
この型は、このテンプレート コンテナー クラスのジェネリック インターフェイスで使用できるジェネリック反転反復子を表します。
例
// cliext_vector_generic_reverse_iterator.cpp
// compile with: /clr
#include <cliext/vector>
int main()
{
cliext::vector<wchar_t> c1;
c1.push_back(L'a');
c1.push_back(L'b');
c1.push_back(L'c');
// display contents " a b c"
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// construct a generic container
cliext::vector<wchar_t>::generic_container^ gc1 = %c1;
for each (wchar_t elem in gc1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// modify generic and display original
cliext::vector<wchar_t>::generic_reverse_iterator gcit = gc1->rbegin();
cliext::vector<wchar_t>::generic_value gcval = *gcit;
*++gcit = gcval;
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
return (0);
}
a b c
a b c
a c c
vector::generic_value (STL/CLR)
コンテナーのジェネリック インターフェイスで使用する要素の型です。
構文
typedef GValue generic_value;
解説
この型は、このテンプレート コンテナー クラスのジェネリック インターフェイスで使用する、格納されている要素の値を記述する GValue
型のオブジェクトを表します。
例
// cliext_vector_generic_value.cpp
// compile with: /clr
#include <cliext/vector>
int main()
{
cliext::vector<wchar_t> c1;
c1.push_back(L'a');
c1.push_back(L'b');
c1.push_back(L'c');
// display contents " a b c"
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// construct a generic container
cliext::vector<wchar_t>::generic_container^ gc1 = %c1;
for each (wchar_t elem in gc1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// modify generic and display original
cliext::vector<wchar_t>::generic_iterator gcit = gc1->begin();
cliext::vector<wchar_t>::generic_value gcval = *gcit;
*++gcit = gcval;
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
return (0);
}
a b c
a b c
a a c
vector::insert (STL/CLR)
指定した位置に要素を追加します。
構文
iterator insert(iterator where, value_type val);
void insert(iterator where, size_type count, value_type val);
template<typename InIt>
void insert(iterator where, InIt first, InIt last);
void insert(iterator where,
System::Collections::Generic::IEnumerable<Value>^ right);
パラメーター
count
挿入する要素の数。
first
挿入する範囲の先頭。
last
挿入する範囲の末尾。
right
挿入する列挙型。
val
挿入する要素の値。
where
コンテナー内の挿入位置 (この前)。
解説
各メンバー関数は、被制御シーケンス内の where によって示されている要素の前に、残りのオペランドによって指定されたシーケンスを挿入します。
最初のメンバー関数は、値 val を持つ要素を挿入し、新しく挿入された要素を指定する反復子を返します。 反復子によって指定された場所の前に 1 つの要素を挿入するために使用します。
2 番目のメンバー関数は、値 val の要素を count 個挿入します。 すべてが同じ値のコピーである 0 個以上の連続する要素を挿入するために使用します。
InIt
が整数型である場合、3 番目のメンバー関数は insert(where, (size_type)first, (value_type)last)
と同じように動作します。 それ以外の場合は、シーケンス [first
, last
) が挿入されます。 別のシーケンスからコピーした 0 個以上の連続する要素を挿入する場合に、これを使用します。
4 つ目のメンバー関数は、right によって指定されたシーケンスを挿入します。 列挙子によって記述されたシーケンスを挿入する場合に、これを使用します。
1 つの要素を挿入する場合、要素のコピー数は、挿入ポイントとシーケンスの近端の間にある要素の数に比例します。 (シーケンスのいずれかの末尾に 1 つ以上の要素を挿入する場合、要素のコピーは発生しません)。 InIt
が入力反復子の場合、3 番目のメンバー関数は、シーケンス内の各要素に対して 1 つの挿入を効果的に実行します。 それ以外で、N
要素を挿入する場合、要素のコピー数は、挿入ポイントとシーケンスの近端の間にある要素の数に N
を加えた数に比例します。
例
// cliext_vector_insert.cpp
// compile with: /clr
#include <cliext/vector>
int main()
{
cliext::vector<wchar_t> c1;
c1.push_back(L'a');
c1.push_back(L'b');
c1.push_back(L'c');
// display initial contents " a b c"
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// insert a single value using iterator
cliext::vector<wchar_t>::iterator it = c1.begin();
System::Console::WriteLine("insert(begin()+1, L'x') = {0}",
*c1.insert(++it, L'x'));
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// insert a repetition of values
cliext::vector<wchar_t> c2;
c2.insert(c2.begin(), 2, L'y');
for each (wchar_t elem in c2)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// insert an iterator range
it = c1.end();
c2.insert(c2.end(), c1.begin(), --it);
for each (wchar_t elem in c2)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// insert an enumeration
c2.insert(c2.begin(), // NOTE: cast is not needed
(System::Collections::Generic::IEnumerable<wchar_t>^)%c1);
for each (wchar_t elem in c2)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
return (0);
}
a b c
insert(begin()+1, L'x') = x
a x b c
y y
y y a x b
a x b c y y a x b
vector::iterator (STL/CLR)
被制御シーケンスの反復子の型です。
構文
typedef T1 iterator;
解説
この型は、被制御シーケンスのランダムアクセス反復子として使用できる未指定の T1
型のオブジェクトを表します。
例
// cliext_vector_iterator.cpp
// compile with: /clr
#include <cliext/vector>
int main()
{
cliext::vector<wchar_t> c1;
c1.push_back(L'a');
c1.push_back(L'b');
c1.push_back(L'c');
// display contents " a b c"
cliext::vector<wchar_t>::iterator it = c1.begin();
for (; it != c1.end(); ++it)
System::Console::Write("{0} ", *it);
System::Console::WriteLine();
// alter first element and redisplay
it = c1.begin();
*it = L'x';
for (; it != c1.end(); ++it)
System::Console::Write("{0} ", *it);
System::Console::WriteLine();
return (0);
}
a b c
x b c
vector::operator= (STL/CLR)
被制御シーケンスを置き換えます。
構文
vector<Value>% operator=(vector<Value>% right);
パラメーター
right
コピーするコンテナー。
解説
このメンバー演算子を使用すると、right がオブジェクトにコピーされ、*this
が返されます。 これを使用して、被制御シーケンスを right の被制御シーケンスのコピーと置き換えます。
例
// cliext_vector_operator_as.cpp
// compile with: /clr
#include <cliext/vector>
int main()
{
cliext::vector<wchar_t> c1;
c1.push_back(L'a');
c1.push_back(L'b');
c1.push_back(L'c');
// display contents " a b c"
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// assign to a new container
cliext::vector<wchar_t> c2;
c2 = c1;
for each (wchar_t elem in c2)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
return (0);
}
a b c
a b c
vector::operator(STL/CLR)
指定した位置にある要素にアクセスします。
構文
reference operator[](size_type pos);
パラメーター
pos
アクセスする要素の位置。
解説
メンバー演算子は、位置 pos にある要素への参照を返します。これは、位置がわかっている要素にアクセスするために使用します。
例
// cliext_vector_operator_sub.cpp
// compile with: /clr
#include <cliext/vector>
int main()
{
cliext::vector<wchar_t> c1;
c1.push_back(L'a');
c1.push_back(L'b');
c1.push_back(L'c');
// display contents " a b c" using subscripting
for (int i = 0; i < c1.size(); ++i)
System::Console::Write("{0} ", c1[i]);
System::Console::WriteLine();
// change an entry and redisplay
c1[1] = L'x';
for (int i = 0; i < c1.size(); ++i)
System::Console::Write("{0} ", c1[i]);
System::Console::WriteLine();
return (0);
}
a b c
a x c
vector::pop_back (STL/CLR)
最後の要素を削除します。
構文
void pop_back();
解説
このメンバー関数は、被制御シーケンス (これは空でない必要があります) の最後の要素を削除します。 これを使用して、ベクターを後ろの 1 つの要素分短くします。
例
// cliext_vector_pop_back.cpp
// compile with: /clr
#include <cliext/vector>
int main()
{
cliext::vector<wchar_t> c1;
c1.push_back(L'a');
c1.push_back(L'b');
c1.push_back(L'c');
// display contents " a b c"
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// pop an element and redisplay
c1.pop_back();
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
return (0);
}
a b c
a b
vector::push_back (STL/CLR)
新規に末尾の要素を追加します。
構文
void push_back(value_type val);
解説
このメンバー関数は、被制御シーケンスの末尾に値 val
を持つ要素を挿入します。 これを使用して、ベクターに別の要素を追加します。
例
// cliext_vector_push_back.cpp
// compile with: /clr
#include <cliext/vector>
int main()
{
cliext::vector<wchar_t> c1;
c1.push_back(L'a');
c1.push_back(L'b');
c1.push_back(L'c');
// display contents " a b c"
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
return (0);
}
a b c
vector::rbegin (STL/CLR)
反転被制御シーケンスの先頭を指定します。
構文
reverse_iterator rbegin();
解説
このメンバー関数は、被制御シーケンスの最後の要素 (または空のシーケンスの先頭の次の位置) を指定する反転反復子を返します。 したがって、逆シーケンスの beginning
を指定します。 これを使用して、被制御シーケンスの current
の先頭を逆の順序で指定する反復子を取得しますが、被制御シーケンスの長さが変わると状態が変わる可能性があります。
例
// cliext_vector_rbegin.cpp
// compile with: /clr
#include <cliext/vector>
int main()
{
cliext::vector<wchar_t> c1;
c1.push_back(L'a');
c1.push_back(L'b');
c1.push_back(L'c');
// display initial contents " a b c"
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// inspect first two items in reversed sequence
cliext::vector<wchar_t>::reverse_iterator rit = c1.rbegin();
System::Console::WriteLine("*rbegin() = {0}", *rit);
System::Console::WriteLine("*++rbegin() = {0}", *++rit);
// alter first two items and reinspect
*--rit = L'x';
*++rit = L'y';
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
return (0);
}
a b c
*rbegin() = c
*++rbegin() = b
a y x
vector::reference (STL/CLR)
要素への参照の型です。
構文
typedef value_type% reference;
解説
この型は、要素への参照を表します。
例
// cliext_vector_reference.cpp
// compile with: /clr
#include <cliext/vector>
int main()
{
cliext::vector<wchar_t> c1;
c1.push_back(L'a');
c1.push_back(L'b');
c1.push_back(L'c');
// display initial contents " a b c"
cliext::vector<wchar_t>::iterator it = c1.begin();
for (; it != c1.end(); ++it)
{ // get a reference to an element
cliext::vector<wchar_t>::reference ref = *it;
System::Console::Write("{0} ", ref);
}
System::Console::WriteLine();
// modify contents " a b c"
for (it = c1.begin(); it != c1.end(); ++it)
{ // get a reference to an element
cliext::vector<wchar_t>::reference ref = *it;
ref += (wchar_t)(L'A' - L'a');
System::Console::Write("{0} ", ref);
}
System::Console::WriteLine();
return (0);
}
a b c
A B C
vector::rend (STL/CLR)
反転被制御シーケンスの末尾を指定します。
構文
reverse_iterator rend();
解説
このメンバー関数は、被制御シーケンスの先頭を超えた位置を示す反転反復子を返します。 したがって、逆シーケンスの end
を指定します。 これを使用して、被制御シーケンスの current
の末尾を逆順に指定する反復子を取得しますが、被制御シーケンスの長さが変化すると、その状態が変化する可能性があります。
例
// cliext_vector_rend.cpp
// compile with: /clr
#include <cliext/vector>
int main()
{
cliext::vector<wchar_t> c1;
c1.push_back(L'a');
c1.push_back(L'b');
c1.push_back(L'c');
// display initial contents " a b c"
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// inspect first two items
cliext::vector<wchar_t>::reverse_iterator rit = c1.rend();
--rit;
System::Console::WriteLine("*-- --rend() = {0}", *--rit);
System::Console::WriteLine("*--rend() = {0}", *++rit);
// alter first two items and reinspect
*--rit = L'x';
*++rit = L'y';
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
return (0);
}
a b c
*-- --rend() = b
*--rend() = a
y x c
vector::reserve (STL/CLR)
コンテナーの最小増加容量を確保します。
構文
void reserve(size_type count);
パラメーター
count
コンテナーの新しい最小容量。
解説
このメンバー関数は、capacity()
がそれ以降少なくとも count を確実に返すようにします。 これを使用して、コンテナーが指定したサイズに拡大されるまで、被制御シーケンスのストレージを再割り当てする必要がなくなるようにします。
例
// cliext_vector_reserve.cpp
// compile with: /clr
#include <cliext/vector>
int main()
{
cliext::vector<wchar_t> c1;
c1.push_back(L'a');
c1.push_back(L'b');
c1.push_back(L'c');
// display initial contents " a b c"
for (int i = 0; i < c1.size(); ++i)
System::Console::Write("{0} ", c1.at(i));
System::Console::WriteLine();
// increase capacity
cliext::vector<wchar_t>::size_type cap = c1.capacity();
System::Console::WriteLine("capacity() = {0}, ok = {1}",
cap, c1.size() <= cap);
c1.reserve(cap + 5);
System::Console::WriteLine("capacity() = {0}, ok = {1}",
c1.capacity(), cap + 5 <= c1.capacity());
return (0);
}
a b c
capacity() = 4, ok = True
capacity() = 9, ok = True
vector::resize (STL/CLR)
要素の数を変更します。
構文
void resize(size_type new_size);
void resize(size_type new_size, value_type val);
パラメーター
new_size
被制御シーケンスの新しいサイズ。
val
埋め込み要素の値。
解説
メンバー関数は両方とも、vector::size (STL/CLR)()
がそれ以降 new_size を確実に返すようにします。 被制御シーケンスを長くする必要がある場合、最初のメンバー関数では値 value_type()
で要素を追加し、2 番目のメンバー関数では値 val で要素を追加します。 制御シーケンスを短くするために、両方のメンバー関数は、最後の要素 vector::size (STL/CLR)() -
new_size
回効果的に消去します。 これを使用して、現在の被制御シーケンスをトリミングまたはパディングすることでシーケンスのサイズを確実に new_size にします。
例
// cliext_vector_resize.cpp
// compile with: /clr
#include <cliext/vector>
int main()
{
// construct an empty container and pad with default values
cliext::vector<wchar_t> c1;
System::Console::WriteLine("size() = {0}", c1.size());
c1.resize(4);
for each (wchar_t elem in c1)
System::Console::Write("{0} ", (int)elem);
System::Console::WriteLine();
// resize to empty
c1.resize(0);
System::Console::WriteLine("size() = {0}", c1.size());
// resize and pad
c1.resize(5, L'x');
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
return (0);
}
size() = 0
0 0 0 0
size() = 0
x x x x x
vector::reverse_iterator (STL/CLR)
被制御シーケンスの反転反復子の型です。
構文
typedef T3 reverse_iterator;
解説
この型は、被制御シーケンスの反転反復子として使用できる未指定の T3
型のオブジェクトを表します。
例
// cliext_vector_reverse_iterator.cpp
// compile with: /clr
#include <cliext/vector>
int main()
{
cliext::vector<wchar_t> c1;
c1.push_back(L'a');
c1.push_back(L'b');
c1.push_back(L'c');
// display contents " a b c" reversed
cliext::vector<wchar_t>::reverse_iterator rit = c1.rbegin();
for (; rit != c1.rend(); ++rit)
System::Console::Write("{0} ", *rit);
System::Console::WriteLine();
// alter first element and redisplay
rit = c1.rbegin();
*rit = L'x';
for (; rit != c1.rend(); ++rit)
System::Console::Write("{0} ", *rit);
System::Console::WriteLine();
return (0);
}
c b a
x b a
vector::size (STL/CLR)
要素の数をカウントします。
構文
size_type size();
解説
このメンバー関数は、被制御シーケンスの長さを返します。 被制御シーケンス内の現在の要素の数を特定する場合に使います。 シーケンスのサイズが 0 以外かどうかを確認する必要がある場合は、「vector::empty (STL/CLR)()
」を参照してください。
例
// cliext_vector_size.cpp
// compile with: /clr
#include <cliext/vector>
int main()
{
cliext::vector<wchar_t> c1;
c1.push_back(L'a');
c1.push_back(L'b');
c1.push_back(L'c');
// display initial contents " a b c"
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
System::Console::WriteLine("size() = {0} starting with 3", c1.size());
// clear the container and reinspect
c1.clear();
System::Console::WriteLine("size() = {0} after clearing", c1.size());
// add elements and clear again
c1.push_back(L'a');
c1.push_back(L'b');
System::Console::WriteLine("size() = {0} after adding 2", c1.size());
return (0);
}
a b c
size() = 3 starting with 3
size() = 0 after clearing
size() = 2 after adding 2
vector::size_type (STL/CLR)
2 つの要素間の距離を表す、符号付きの型です。
構文
typedef int size_type;
解説
この型は、負でない要素数を表します。
例
// cliext_vector_size_type.cpp
// compile with: /clr
#include <cliext/vector>
int main()
{
cliext::vector<wchar_t> c1;
c1.push_back(L'a');
c1.push_back(L'b');
c1.push_back(L'c');
// display initial contents " a b c"
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// compute positive difference
cliext::vector<wchar_t>::size_type diff = c1.end() - c1.begin();
System::Console::WriteLine("end()-begin() = {0}", diff);
return (0);
}
a b c
end()-begin() = 3
vector::swap (STL/CLR)
2 つのコンテナーのコンテンツを交換します。
構文
void swap(vector<Value>% right);
パラメーター
right
コンテンツを交換するコンテナー。
解説
このメンバー関数は、*this
と right の間で被制御シーケンスを交換します。 一定時間に実行し、例外をスローしません。 2 つのコンテナーのコンテンツを簡単に交換する方法として、これを使用します。
例
// cliext_vector_swap.cpp
// compile with: /clr
#include <cliext/vector>
int main()
{
cliext::vector<wchar_t> c1;
c1.push_back(L'a');
c1.push_back(L'b');
c1.push_back(L'c');
// display initial contents " a b c"
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// construct another container with repetition of values
cliext::vector<wchar_t> c2(5, L'x');
for each (wchar_t elem in c2)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// swap and redisplay
c1.swap(c2);
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
for each (wchar_t elem in c2)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
return (0);
}
a b c
x x x x x
x x x x x
a b c
vector::to_array (STL/CLR)
被制御シーケンスを新しい配列にコピーします。
構文
cli::array<Value>^ to_array();
解説
このメンバー関数は、被制御シーケンスを含む配列を返します。 配列形式の被制御シーケンスのコピーを取得する場合に、これを使用します。
例
// cliext_vector_to_array.cpp
// compile with: /clr
#include <cliext/vector>
int main()
{
cliext::vector<wchar_t> c1;
c1.push_back(L'a');
c1.push_back(L'b');
c1.push_back(L'c');
// copy the container and modify it
cli::array<wchar_t>^ a1 = c1.to_array();
c1.push_back(L'd');
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// display the earlier array copy
for each (wchar_t elem in a1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
return (0);
}
a b c d
a b c
vector::value_type (STL/CLR)
要素の型。
構文
typedef Value value_type;
解説
この型は、テンプレート パラメーター Value のシノニムです。
例
// cliext_vector_value_type.cpp
// compile with: /clr
#include <cliext/vector>
int main()
{
cliext::vector<wchar_t> c1;
c1.push_back(L'a');
c1.push_back(L'b');
c1.push_back(L'c');
// display contents " a b c" using value_type
for (cliext::vector<wchar_t>::iterator it = c1.begin();
it != c1.end(); ++it)
{ // store element in value_type object
cliext::vector<wchar_t>::value_type val = *it;
System::Console::Write("{0} ", val);
}
System::Console::WriteLine();
return (0);
}
a b c
vector::vector (STL/CLR)
コンテナー オブジェクトを構築します。
構文
vector();
vector(vector<Value>% right);
vector(vector<Value>^ right);
explicit vector(size_type count);
vector(size_type count, value_type val);
template<typename InIt>
vector(InIt first, InIt last);
vector(System::Collections::Generic::IEnumerable<Value>^ right);
パラメーター
count
挿入する要素の数。
first
挿入する範囲の先頭。
last
挿入する範囲の末尾。
right
挿入するオブジェクトまたは範囲。
val
挿入する要素の値。
解説
コンストラクター:
vector();
は、要素なしで被制御シーケンスを初期化します。 これを使用して、空の初期被制御シーケンスを指定します。
コンストラクター:
vector(vector<Value>% right);
は、被制御シーケンスをシーケンス [right.begin()
, right.end()
) で初期化します。 これを使用して、ベクター オブジェクト right によって制御されるシーケンスのコピーである最初の被制御シーケンスを指定します。
コンストラクター:
vector(vector<Value>^ right);
は、被制御シーケンスをシーケンス [right->begin()
, right->end()
) で初期化します。 これを使用して、ハンドルが right のベクター オブジェクトによって制御されるシーケンスのコピーである最初の被制御シーケンスを指定します。
コンストラクター:
explicit vector(size_type count);
は、それぞれ値が value_type()
の count 個の要素で被制御シーケンスを初期化します。 これを使って、すべて既定値を持つ要素をコンテナーに格納します。
コンストラクター:
vector(size_type count, value_type val);
は、それぞれ値が val の count 個の要素で被制御シーケンスを初期化します。 これを使って、すべて同じ値を持つ要素をコンテナーに格納します。
コンストラクター:
template<typename InIt>
vector(InIt first, InIt last);
は、被制御シーケンスをシーケンス [first
, last
) で初期化します。 これを使用して、被制御シーケンスを別のシーケンスのコピーにします。
コンストラクター:
vector(System::Collections::Generic::IEnumerable<Value>^ right);
は、列挙子 right によって指定されたシーケンスで被制御シーケンスを初期化します。 これを使用して、被制御シーケンスを列挙子によって記述された別のシーケンスのコピーにします。
例
// cliext_vector_construct.cpp
// compile with: /clr
#include <cliext/vector>
int main()
{
// construct an empty container
cliext::vector<wchar_t> c1;
System::Console::WriteLine("size() = {0}", c1.size());
// construct with a repetition of default values
cliext::vector<wchar_t> c2(3);
for each (wchar_t elem in c2)
System::Console::Write("{0} ", (int)elem);
System::Console::WriteLine();
// construct with a repetition of values
cliext::vector<wchar_t> c3(6, L'x');
for each (wchar_t elem in c3)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// construct with an iterator range
cliext::vector<wchar_t>::iterator it = c3.end();
cliext::vector<wchar_t> c4(c3.begin(), --it);
for each (wchar_t elem in c4)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// construct with an enumeration
cliext::vector<wchar_t> c5( // NOTE: cast is not needed
(System::Collections::Generic::IEnumerable<wchar_t>^)%c3);
for each (wchar_t elem in c5)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// construct by copying another container
cliext::vector<wchar_t> c7(c3);
for each (wchar_t elem in c7)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// construct by copying a container handle
cliext::vector<wchar_t> c8(%c3);
for each (wchar_t elem in c8)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
return (0);
}
size() = 0
0 0 0
x x x x x x
x x x x x
x x x x x x
x x x x x x
x x x x x x
operator!= (vector) (STL/CLR)
ベクターの "等しくない" の比較。
構文
template<typename Value>
bool operator!=(vector<Value>% left,
vector<Value>% right);
パラメーター
left
比較する左のコンテナー。
right
比較する右のコンテナー。
解説
この演算子関数は、!(left == right)
を返します。 2 つのベクターを要素別に比較する際、left に right と同じ順序が指定されていないかどうかをテストする場合に、これを使用します。
例
// cliext_vector_operator_ne.cpp
// compile with: /clr
#include <cliext/vector>
int main()
{
cliext::vector<wchar_t> c1;
c1.push_back(L'a');
c1.push_back(L'b');
c1.push_back(L'c');
// display contents " a b c"
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// assign to a new container
cliext::vector<wchar_t> c2;
c2.push_back(L'a');
c2.push_back(L'b');
c2.push_back(L'd');
// display contents " a b d"
for each (wchar_t elem in c2)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
System::Console::WriteLine("[a b c] != [a b c] is {0}",
c1 != c1);
System::Console::WriteLine("[a b c] != [a b d] is {0}",
c1 != c2);
return (0);
}
a b c
a b d
[a b c] != [a b c] is False
[a b c] != [a b d] is True
operator<
(vector) (STL/CLR)
ベクターの "より小さい" の比較。
構文
template<typename Value>
bool operator<(vector<Value>% left,
vector<Value>% right);
パラメーター
left
比較する左のコンテナー。
right
比較する右のコンテナー。
解説
この演算子関数は、!(right[i] < left[i])
の最小の位置である i
について、left[i] < right[i]
も true である場合に true を返します。 それ以外の場合は、left->size() < right->size()
を返します。2 つのベクターを要素別に比較する際、left が right より前に指定されているかどうかをテストする場合に、これを使用します。
例
// cliext_vector_operator_lt.cpp
// compile with: /clr
#include <cliext/vector>
int main()
{
cliext::vector<wchar_t> c1;
c1.push_back(L'a');
c1.push_back(L'b');
c1.push_back(L'c');
// display contents " a b c"
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// assign to a new container
cliext::vector<wchar_t> c2;
c2.push_back(L'a');
c2.push_back(L'b');
c2.push_back(L'd');
// display contents " a b d"
for each (wchar_t elem in c2)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
System::Console::WriteLine("[a b c] < [a b c] is {0}",
c1 < c1);
System::Console::WriteLine("[a b c] < [a b d] is {0}",
c1 < c2);
return (0);
}
a b c
a b d
[a b c] < [a b c] is False
[a b c] < [a b d] is True
operator<=
(vector) (STL/CLR)
ベクターの "以下" の比較。
構文
template<typename Value>
bool operator<=(vector<Value>% left,
vector<Value>% right);
パラメーター
left
比較する左のコンテナー。
right
比較する右のコンテナー。
解説
この演算子関数は、!(right < left)
を返します。 2 つのベクターを要素別に比較する際、left が right の後に指定されていないかどうかをテストする場合に、これを使用します。
例
// cliext_vector_operator_le.cpp
// compile with: /clr
#include <cliext/vector>
int main()
{
cliext::vector<wchar_t> c1;
c1.push_back(L'a');
c1.push_back(L'b');
c1.push_back(L'c');
// display contents " a b c"
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// assign to a new container
cliext::vector<wchar_t> c2;
c2.push_back(L'a');
c2.push_back(L'b');
c2.push_back(L'd');
// display contents " a b d"
for each (wchar_t elem in c2)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
System::Console::WriteLine("[a b c] <= [a b c] is {0}",
c1 <= c1);
System::Console::WriteLine("[a b d] <= [a b c] is {0}",
c2 <= c1);
return (0);
}
a b c
a b d
[a b c] <= [a b c] is True
[a b d] <= [a b c] is False
operator== (vector) (STL/CLR)
ベクターの "等しい" の比較。
構文
template<typename Value>
bool operator==(vector<Value>% left,
vector<Value>% right);
パラメーター
left
比較する左のコンテナー。
right
比較する右のコンテナー。
解説
演算子関数は、left および right によって制御されるシーケンスの長さが同じで、各位置i
left[i] ==
right[i]
場合にのみ true を返します。 2 つのベクターを要素別に比較する際、left に right と同じ順序が指定されているかどうかをテストする場合に、これを使用します。
例
// cliext_vector_operator_eq.cpp
// compile with: /clr
#include <cliext/vector>
int main()
{
cliext::vector<wchar_t> c1;
c1.push_back(L'a');
c1.push_back(L'b');
c1.push_back(L'c');
// display contents " a b c"
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// assign to a new container
cliext::vector<wchar_t> c2;
c2.push_back(L'a');
c2.push_back(L'b');
c2.push_back(L'd');
// display contents " a b d"
for each (wchar_t elem in c2)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
System::Console::WriteLine("[a b c] == [a b c] is {0}",
c1 == c1);
System::Console::WriteLine("[a b c] == [a b d] is {0}",
c1 == c2);
return (0);
}
a b c
a b d
[a b c] == [a b c] is True
[a b c] == [a b d] is False
operator>
(vector) (STL/CLR)
ベクターの "より大きい" 比較。
構文
template<typename Value>
bool operator>(vector<Value>% left,
vector<Value>% right);
パラメーター
left
比較する左のコンテナー。
right
比較する右のコンテナー。
解説
演算子関数は right
<
left
を返します。 2 つのベクターを要素別に比較する際、left が right の後に指定されているかどうかをテストする場合に、これを使用します。
例
// cliext_vector_operator_gt.cpp
// compile with: /clr
#include <cliext/vector>
int main()
{
cliext::vector<wchar_t> c1;
c1.push_back(L'a');
c1.push_back(L'b');
c1.push_back(L'c');
// display contents " a b c"
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// assign to a new container
cliext::vector<wchar_t> c2;
c2.push_back(L'a');
c2.push_back(L'b');
c2.push_back(L'd');
// display contents " a b d"
for each (wchar_t elem in c2)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
System::Console::WriteLine("[a b c] > [a b c] is {0}",
c1 > c1);
System::Console::WriteLine("[a b d] > [a b c] is {0}",
c2 > c1);
return (0);
}
a b c
a b d
[a b c] > [a b c] is False
[a b d] > [a b c] is True
operator>=
(vector) (STL/CLR)
ベクターの "以上" の比較。
構文
template<typename Value>
bool operator>=(vector<Value>% left,
vector<Value>% right);
パラメーター
left
比較する左のコンテナー。
right
比較する右のコンテナー。
解説
この演算子関数は、!(left < right)
を返します。 2 つのベクターを要素別に比較する際、left が right の前に指定されていないかどうかをテストする場合に、これを使用します。
例
// cliext_vector_operator_ge.cpp
// compile with: /clr
#include <cliext/vector>
int main()
{
cliext::vector<wchar_t> c1;
c1.push_back(L'a');
c1.push_back(L'b');
c1.push_back(L'c');
// display contents " a b c"
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// assign to a new container
cliext::vector<wchar_t> c2;
c2.push_back(L'a');
c2.push_back(L'b');
c2.push_back(L'd');
// display contents " a b d"
for each (wchar_t elem in c2)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
System::Console::WriteLine("[a b c] >= [a b c] is {0}",
c1 >= c1);
System::Console::WriteLine("[a b c] >= [a b d] is {0}",
c1 >= c2);
return (0);
}
a b c
a b d
[a b c] >= [a b c] is True
[a b c] >= [a b d] is False