<cliext/adapter>
(STL/CLR)
STL/CLR 헤더 <cliext/adapter>
는 두 개의 클래스 템플릿(collection_adapter
및 )과 range_adapter
함수 템플릿 make_collection
을 지정합니다.
구문
#include <cliext/adapter>
요구 사항
헤더:<cliext/adapter>
네임스페이스: cliext
선언
클래스 | 설명 |
---|---|
collection_adapter |
BCL(기본 클래스 라이브러리) 컬렉션을 범위로 래핑합니다. |
range_adapter |
범위를 BCL 컬렉션으로 래핑합니다. |
함수 | 설명 |
---|---|
make_collection |
반복기 쌍을 사용하여 범위 어댑터를 만듭니다. |
멤버
collection_adapter
STL/CLR 컨테이너로 사용할 .NET 컬렉션을 래핑합니다. A collection_adapter
는 간단한 STL/CLR 컨테이너 개체를 설명하는 템플릿 클래스입니다. BCL(기본 클래스 라이브러리) 인터페이스를 래핑하고 제어되는 시퀀스를 조작하는 데 사용하는 반복기 쌍을 반환합니다.
구문
template<typename Coll>
ref class collection_adapter;
template<>
ref class collection_adapter<
System::Collections::ICollection>;
template<>
ref class collection_adapter<
System::Collections::IEnumerable>;
template<>
ref class collection_adapter<
System::Collections::IList>;
template<>
ref class collection_adapter<
System::Collections::IDictionary>;
template<typename Value>
ref class collection_adapter<
System::Collections::Generic::ICollection<Value>>;
template<typename Value>
ref class collection_adapter<
System::Collections::Generic::IEnumerable<Value>>;
template<typename Value>
ref class collection_adapter<
System::Collections::Generic::IList<Value>>;
template<typename Key,
typename Value>
ref class collection_adapter<
System::Collections::Generic::IDictionary<Key, Value>>;
매개 변수
Coll
래핑된 컬렉션의 형식입니다.
특수화
특수화 | 설명 |
---|---|
IEnumerable |
요소를 통해 시퀀스합니다. |
ICollection |
요소 그룹을 유지 관리합니다. |
IList |
정렬된 요소 그룹을 유지 관리합니다. |
IDictionary |
{key, value} 쌍 집합을 유지 관리합니다. |
IEnumerable<Value> |
형식화된 요소를 통한 시퀀스입니다. |
ICollection<Value> |
형식화된 요소 그룹을 유지 관리합니다. |
IList<Value> |
정렬된 형식화된 요소 그룹을 유지 관리합니다. |
IDictionary<Value> |
형식화된 {key, value} 쌍 집합을 유지 관리합니다. |
멤버
형식 정의 | 설명 |
---|---|
collection_adapter::difference_type |
두 요소 사이의 부호가 있는 거리의 형식입니다. |
collection_adapter::iterator |
제어되는 시퀀스에 대한 반복기의 형식입니다. |
collection_adapter::key_type |
사전 키의 형식입니다. |
collection_adapter::mapped_type |
사전 값의 형식입니다. |
collection_adapter::reference |
요소에 대한 참조의 형식입니다. |
collection_adapter::size_type |
두 요소 사이의 부호가 있는 거리의 형식입니다. |
collection_adapter::value_type |
요소의 형식입니다. |
멤버 함수 | 설명 |
---|---|
collection_adapter::base |
래핑된 BCL 인터페이스를 지정합니다. |
collection_adapter::begin |
제어되는 시퀀스의 시작을 지정합니다. |
collection_adapter::collection_adapter |
어댑터 개체를 생성합니다. |
collection_adapter::end |
제어되는 시퀀스의 끝을 지정합니다. |
collection_adapter::size |
요소 수를 계산합니다. |
collection_adapter::swap |
두 컨테이너의 내용을 바꿉니다. |
Operator | 설명 |
---|---|
collection_adapter::operator= |
저장된 BCL 핸들을 바꿉니다. |
설명
이 템플릿 클래스를 사용하여 BCL 컨테이너를 STL/CLR 컨테이너로 조작합니다. BCL collection_adapter
인터페이스에 대한 핸들을 저장합니다. 이 인터페이스는 요소 시퀀스를 제어합니다. 개체 X
는 collection_adapter
입력 반복기 쌍을 X.begin()
반환하고 X.end()
요소를 순서대로 방문하는 데 사용합니다. 또한 일부 특수화를 사용하여 X.size()
제어되는 시퀀스의 길이를 결정할 수 있습니다.
collection_adapter::base
래핑된 BCL 인터페이스를 지정합니다.
구문
Coll^ base();
설명
멤버 함수는 저장된 BCL 인터페이스 핸들을 반환합니다.
예시
// cliext_collection_adapter_base.cpp
// compile with: /clr
#include <cliext/adapter>
#include <cliext/deque>
typedef cliext::collection_adapter<
System::Collections::ICollection> Mycoll;
int main()
{
cliext::deque<wchar_t> d6x(6, L'x');
Mycoll c1(%d6x);
// display initial contents "x x x x x x "
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
System::Console::WriteLine("base() same = {0}", c1.base() == %c1);
return (0);
}
x x x x x x
base() same = True
collection_adapter::begin
제어되는 시퀀스의 시작을 지정합니다.
구문
iterator begin();
설명
멤버 함수는 제어되는 시퀀스의 첫 번째 요소를 지정하거나 빈 시퀀스의 끝 바로 너머를 지정하는 입력 반복기를 반환합니다.
예시
// cliext_collection_adapter_begin.cpp
// compile with: /clr
#include <cliext/adapter>
#include <cliext/deque>
typedef cliext::collection_adapter<
System::Collections::ICollection> Mycoll;
int main()
{
cliext::deque<wchar_t> d1;
d1.push_back(L'a');
d1.push_back(L'b');
d1.push_back(L'c');
Mycoll c1(%d1);
// 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
Mycoll::iterator it = c1.begin();
System::Console::WriteLine("*begin() = {0}", *it);
System::Console::WriteLine("*++begin() = {0}", *++it);
return (0);
}
a b c
*begin() = a
*++begin() = b
collection_adapter::collection_adapter
어댑터 개체를 생성합니다.
구문
collection_adapter();
collection_adapter(collection_adapter<Coll>% right);
collection_adapter(collection_adapter<Coll>^ right);
collection_adapter(Coll^ collection);
매개 변수
collection
래핑할 BCL 핸들입니다.
right
복사할 개체입니다.
설명
생성자:
collection_adapter();
을 사용하여 저장된 핸들을 초기화합니다 nullptr
.
생성자:
collection_adapter(collection_adapter<Coll>% right);
을 사용하여 저장된 핸들을 초기화합니다 right.base()
.
생성자:
collection_adapter(collection_adapter<Coll>^ right);
을 사용하여 저장된 핸들을 초기화합니다 right->base()
.
생성자:
collection_adapter(Coll^ collection);
을 사용하여 저장된 핸들을 초기화합니다 collection
.
예시
// cliext_collection_adapter_construct.cpp
// compile with: /clr
#include <cliext/adapter>
#include <cliext/deque>
typedef cliext::collection_adapter<
System::Collections::ICollection> Mycoll;
int main()
{
cliext::deque<wchar_t> d6x(6, L'x');
// construct an empty container
Mycoll c1;
System::Console::WriteLine("base() null = {0}", c1.base() == nullptr);
// construct with a handle
Mycoll c2(%d6x);
for each (wchar_t elem in c2)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// construct by copying another container
Mycoll c3(c2);
for each (wchar_t elem in c3)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// construct by copying a container handle
Mycoll c4(%c3);
for each (wchar_t elem in c4)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
return (0);
}
base() null = True
x x x x x x
x x x x x x
x x x x x x
collection_adapter::difference_type
두 요소 사이의 부가된 거리 형식입니다.
구문
typedef int difference_type;
설명
형식은 서명된 요소 수를 설명합니다.
예시
// cliext_collection_adapter_difference_type.cpp
// compile with: /clr
#include <cliext/adapter>
#include <cliext/deque>
typedef cliext::collection_adapter<
System::Collections::ICollection> Mycoll;
int main()
{
cliext::deque<wchar_t> d1;
d1.push_back(L'a');
d1.push_back(L'b');
d1.push_back(L'c');
Mycoll c1(%d1);
// display initial contents "a b c "
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// compute positive difference
Mycoll::difference_type diff = 0;
Mycoll::iterator it = c1.begin();
for (; it != c1.end(); ++it)
++diff;
System::Console::WriteLine("end()-begin() = {0}", diff);
return (0);
}
a b c
end()-begin() = 3
collection_adapter::end
제어되는 시퀀스의 끝을 지정합니다.
구문
iterator end();
설명
멤버 함수는 제어되는 시퀀스의 끝 바로 다음을 가리키는 입력 반복기를 반환합니다.
예시
// cliext_collection_adapter_end.cpp
// compile with: /clr
#include <cliext/adapter>
#include <cliext/deque>
typedef cliext::collection_adapter<
System::Collections::ICollection> Mycoll;
int main()
{
cliext::deque<wchar_t> d1;
d1.push_back(L'a');
d1.push_back(L'b');
d1.push_back(L'c');
Mycoll c1(%d1);
// display initial contents "a b c "
Mycoll::iterator it = c1.begin();
for (; it != c1.end(); ++it)
System::Console::Write("{0} ", *it);
System::Console::WriteLine();
return (0);
}
a b c
collection_adapter::iterator
제어되는 시퀀스에 대한 반복기의 형식입니다.
구문
typedef T1 iterator;
설명
형식은 제어되는 시퀀스에 대한 입력 반복기로 사용할 수 있는 지정되지 않은 형식 T1
의 개체를 설명합니다.
예시
// cliext_collection_adapter_iterator.cpp
// compile with: /clr
#include <cliext/adapter>
#include <cliext/deque>
typedef cliext::collection_adapter<
System::Collections::ICollection> Mycoll;
int main()
{
cliext::deque<wchar_t> d1;
d1.push_back(L'a');
d1.push_back(L'b');
d1.push_back(L'c');
Mycoll c1(%d1);
// display initial contents "a b c "
Mycoll::iterator it = c1.begin();
for (; it != c1.end(); ++it)
System::Console::Write("{0} ", *it);
System::Console::WriteLine();
return (0);
}
a b c
collection_adapter::key_type
사전 키의 형식입니다.
구문
typedef Key key_type;
설명
형식은 특수화 IDictionary
에서 템플릿 매개 변수Key
의 동의어이거나 IDictionary<Value>
정의되지 않습니다.
예시
// cliext_collection_adapter_key_type.cpp
// compile with: /clr
#include <cliext/adapter>
#include <cliext/map>
typedef cliext::map<wchar_t, int> Mymap;
typedef cliext::collection_adapter<
System::Collections::Generic::IDictionary<wchar_t, int>> Mycoll;
typedef System::Collections::Generic::KeyValuePair<wchar_t,int> Mypair;
int main()
{
Mymap d1;
d1.insert(Mymap::make_value(L'a', 1));
d1.insert(Mymap::make_value(L'b', 2));
d1.insert(Mymap::make_value(L'c', 3));
Mycoll c1(%d1);
// display contents "[a 1] [b 2] [c 3] "
for each (Mypair elem in c1)
{
Mycoll::key_type key = elem.Key;
Mycoll::mapped_type value = elem.Value;
System::Console::Write("[{0} {1}] ", key, value);
}
System::Console::WriteLine();
return (0);
}
[a 1] [b 2] [c 3]
collection_adapter::mapped_type
사전 값의 형식입니다.
구문
typedef Value mapped_type;
설명
형식은 특수화 IDictionary
에서 템플릿 매개 변수Value
의 동의어이거나 IDictionary<Value>
정의되지 않습니다.
예시
// cliext_collection_adapter_mapped_type.cpp
// compile with: /clr
#include <cliext/adapter>
#include <cliext/map>
typedef cliext::map<wchar_t, int> Mymap;
typedef cliext::collection_adapter<
System::Collections::Generic::IDictionary<wchar_t, int>> Mycoll;
typedef System::Collections::Generic::KeyValuePair<wchar_t,int> Mypair;
int main()
{
Mymap d1;
d1.insert(Mymap::make_value(L'a', 1));
d1.insert(Mymap::make_value(L'b', 2));
d1.insert(Mymap::make_value(L'c', 3));
Mycoll c1(%d1);
// display contents "[a 1] [b 2] [c 3] "
for each (Mypair elem in c1)
{
Mycoll::key_type key = elem.Key;
Mycoll::mapped_type value = elem.Value;
System::Console::Write("[{0} {1}] ", key, value);
}
System::Console::WriteLine();
return (0);
}
[a 1] [b 2] [c 3]
collection_adapter::operator=
저장된 BCL 핸들을 바꿉니다.
구문
collection_adapter<Coll>% operator=(collection_adapter<Coll>% right);
매개 변수
right
복사할 어댑터입니다.
설명
멤버 연산자는 개체에 복사한 다음 반환합니다 right
*this
. 저장된 BCL 핸들을 저장된 BCL 핸들 right
의 복사본으로 바꾸는 데 사용합니다.
예시
// cliext_collection_adapter_operator_as.cpp
// compile with: /clr
#include <cliext/adapter>
#include <cliext/deque>
typedef cliext::collection_adapter<
System::Collections::ICollection> Mycoll;
int main()
{
cliext::deque<wchar_t> d1;
d1.push_back(L'a');
d1.push_back(L'b');
d1.push_back(L'c');
Mycoll c1(%d1);
// display initial contents "a b c "
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// assign to a new container
Mycoll 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
collection_adapter::reference
요소에 대한 참조의 형식입니다.
구문
typedef value_type% reference;
설명
이 형식은 요소에 대한 참조를 설명합니다.
예시
// cliext_collection_adapter_reference.cpp
// compile with: /clr
#include <cliext/adapter>
#include <cliext/deque>
typedef cliext::collection_adapter<
System::Collections::ICollection> Mycoll;
int main()
{
cliext::deque<wchar_t> d1;
d1.push_back(L'a');
d1.push_back(L'b');
d1.push_back(L'c');
Mycoll c1(%d1);
// display initial contents "a b c "
Mycoll::iterator it = c1.begin();
for (; it != c1.end(); ++it)
{ // get a reference to an element
Mycoll::reference ref = *it;
System::Console::Write("{0} ", ref);
}
System::Console::WriteLine();
return (0);
}
a b c
collection_adapter::size
요소 수를 계산합니다.
구문
size_type size();
설명
멤버 함수는 제어되는 시퀀스의 길이를 반환합니다. 특수화 IEnumerable
에 IEnumerable<Value>
정의되어 있지 않습니다.
예시
// cliext_collection_adapter_size.cpp
// compile with: /clr
#include <cliext/adapter>
#include <cliext/deque>
typedef cliext::collection_adapter<
System::Collections::ICollection> Mycoll;
int main()
{
cliext::deque<wchar_t> d6x(6, L'x');
Mycoll c1(%d6x);
// display initial contents "x x x x x x "
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
System::Console::WriteLine("size() = {0}", c1.size());
return (0);
}
x x x x x x
size() = 6
collection_adapter::size_type
두 요소 사이의 부호가 있는 거리의 형식입니다.
구문
typedef int size_type;
설명
이 형식은 음수가 아닌 요소 수를 설명합니다.
예시
// cliext_collection_adapter_size_type.cpp
// compile with: /clr
#include <cliext/adapter>
#include <cliext/deque>
typedef cliext::collection_adapter<
System::Collections::ICollection> Mycoll;
int main()
{
cliext::deque<wchar_t> d6x(6, L'x');
Mycoll c1(%d6x);
// display initial contents "x x x x x x"
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
Mycoll::size_type size = c1.size();
System::Console::WriteLine("size() = {0}", size);
return (0);
}
x x x x x x
size() = 6
collection_adapter::swap
두 컨테이너의 내용을 바꿉니다.
구문
void swap(collection_adapter<Coll>% right);
매개 변수
right
콘텐츠와 바꿀 컨테이너입니다.
설명
멤버 함수는 저장된 BCL 핸들을 간에 *this
right
교환합니다.
예시
// cliext_collection_adapter_swap.cpp
// compile with: /clr
#include <cliext/adapter>
#include <cliext/deque>
typedef cliext::collection_adapter<
System::Collections::ICollection> Mycoll;
int main()
{
cliext::deque<wchar_t> d1;
d1.push_back(L'a');
d1.push_back(L'b');
d1.push_back(L'c');
Mycoll c1(%d1);
// 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::deque<wchar_t> d2(5, L'x');
Mycoll c2(%d2);
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
collection_adapter::value_type
요소의 형식입니다.
구문
typedef Value value_type;
설명
형식은 특수화에 있는 경우 템플릿 매개 변수 Value
의 동의어이고, 그렇지 않으면 의 동의어 System::Object^
입니다.
예시
// cliext_collection_adapter_value_type.cpp
// compile with: /clr
#include <cliext/adapter>
#include <cliext/deque>
typedef cliext::collection_adapter<
System::Collections::ICollection> Mycoll;
int main()
{
cliext::deque<wchar_t> d1;
d1.push_back(L'a');
d1.push_back(L'b');
d1.push_back(L'c');
Mycoll c1(%d1);
// display contents "a b c" using value_type
for (Mycoll::iterator it = c1.begin();
it != c1.end(); ++it)
{ // store element in value_type object
Mycoll::value_type val = *it;
System::Console::Write("{0} ", val);
}
System::Console::WriteLine();
return (0);
}
a b c
make_collection(STL/CLR)
range_adapter
반복기 쌍에서 만듭니다.
구문
template<typename Iter>
range_adapter<Iter> make_collection(Iter first, Iter last);
매개 변수
Iter
래핑된 반복기의 형식입니다.
first
래핑할 첫 번째 반복기입니다.
last
래핑할 두 번째 반복기입니다.
설명
함수 템플릿은 .를 반환합니다 gcnew range_adapter<Iter>(first, last)
. 반복기 쌍에서 개체를 range_adapter<Iter>
생성하는 데 사용합니다.
예시
// cliext_make_collection.cpp
// compile with: /clr
#include <cliext/adapter>
#include <cliext/deque>
typedef cliext::deque<wchar_t> Mycont;
typedef cliext::range_adapter<Mycont::iterator> Myrange;
int main()
{
cliext::deque<wchar_t> d1;
d1.push_back(L'a');
d1.push_back(L'b');
d1.push_back(L'c');
// display contents " a b c"
for each (wchar_t elem in d1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
System::Collections::ICollection^ p1 =
cliext::make_collection(d1.begin(), d1.end());
System::Console::WriteLine("Count = {0}", p1->Count);
System::Console::WriteLine("IsSynchronized = {0}",
p1->IsSynchronized);
System::Console::WriteLine("SyncRoot not nullptr = {0}",
p1->SyncRoot != nullptr);
// copy the sequence
cli::array<System::Object^>^ a1 = gcnew cli::array<System::Object^>(5);
a1[0] = L'|';
p1->CopyTo(a1, 1);
a1[4] = L'|';
for each (wchar_t elem in a1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
return (0);
}
a b c
Count = 3
IsSynchronized = False
SyncRoot not nullptr = True
| a b c |
range_adapter(STL/CLR)
여러 BCL(기본 클래스 라이브러리) 인터페이스를 구현하는 데 사용되는 반복기 쌍을 래핑하는 템플릿 클래스입니다. range_adapter 사용하여 BCL 컬렉션인 것처럼 STL/CLR 범위를 조작합니다.
구문
template<typename Iter>
ref class range_adapter
: public
System::Collections::IEnumerable,
System::Collections::ICollection,
System::Collections::Generic::IEnumerable<Value>,
System::Collections::Generic::ICollection<Value>
{ ..... };
매개 변수
Iter
래핑된 반복기와 연결된 형식입니다.
멤버
멤버 함수 | 설명 |
---|---|
range_adapter::range_adapter |
어댑터 개체를 생성합니다. |
Operator | 설명 |
---|---|
range_adapter::operator= |
저장된 반복기 쌍을 바꿉니다. |
인터페이스
인터페이스 | 설명 |
---|---|
IEnumerable | 컬렉션의 요소를 반복합니다. |
ICollection | 요소 그룹을 유지 관리합니다. |
IEnumerable<T> | 컬렉션에서 형식화된 요소를 반복합니다. |
ICollection<T> | 형식화된 요소 그룹을 유지 관리합니다. |
설명
range_adapter 반복기 쌍을 저장하여 요소 시퀀스를 구분합니다. 개체는 요소를 순서대로 반복할 수 있는 4개의 BCL 인터페이스를 구현합니다. 이 템플릿 클래스를 사용하여 BCL 컨테이너와 마찬가지로 STL/CLR 범위를 조작합니다.
range_adapter::operator=
저장된 반복기 쌍을 바꿉니다.
구문
range_adapter<Iter>% operator=(range_adapter<Iter>% right);
매개 변수
right
복사할 어댑터입니다.
설명
멤버 연산자는 개체에 복사한 다음 반환합니다 right
*this
. 저장된 반복기 쌍을 저장된 반복기 쌍 right
의 복사본으로 바꾸는 데 사용합니다.
예시
// cliext_range_adapter_operator_as.cpp
// compile with: /clr
#include <cliext/adapter>
#include <cliext/deque>
typedef cliext::deque<wchar_t> Mycont;
typedef cliext::range_adapter<Mycont::iterator> Myrange;
int main()
{
cliext::deque<wchar_t> d1;
d1.push_back(L'a');
d1.push_back(L'b');
d1.push_back(L'c');
Myrange c1(d1.begin(), d1.end());
// 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
Myrange 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
range_adapter::range_adapter
어댑터 개체를 생성합니다.
구문
range_adapter();
range_adapter(range_adapter<Iter>% right);
range_adapter(range_adapter<Iter>^ right);
range_adapter(Iter first, Iter last);
매개 변수
first
래핑할 첫 번째 반복기입니다.
last
래핑할 두 번째 반복기입니다.
right
복사할 개체입니다.
설명
생성자:
range_adapter();
는 기본 생성된 반복기를 사용하여 저장된 반복기 쌍을 초기화합니다.
생성자:
range_adapter(range_adapter<Iter>% right);
에 저장된 쌍을 복사하여 저장된 반복기 쌍을 초기화합니다 right
.
생성자:
range_adapter(range_adapter<Iter>^ right);
에 저장된 쌍을 복사하여 저장된 반복기 쌍을 초기화합니다 *right
.
생성자:
range_adapter(Iter^ first, last);
와 함께 저장된 반복기 쌍을 first
초기화합니다 last
.
예제
// cliext_range_adapter_construct.cpp
// compile with: /clr
#include <cliext/adapter>
#include <cliext/deque>
typedef cliext::deque<wchar_t> Mycont;
typedef cliext::range_adapter<Mycont::iterator> Myrange;
int main()
{
cliext::deque<wchar_t> d1;
d1.push_back(L'a');
d1.push_back(L'b');
d1.push_back(L'c');
// construct an empty adapter
Myrange c1;
// construct with an iterator pair
Myrange c2(d1.begin(), d1.end());
for each (wchar_t elem in c2)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// construct by copying another adapter
Myrange c3(c2);
for each (wchar_t elem in c3)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// construct by copying an adapter handle
Myrange c4(%c3);
for each (wchar_t elem in c4)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
return (0);
}
a b c
a b c
a b c