Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O cabeçalho <cliext/adapter> STL/CLR especifica dois modelos de classe (collection_adapter e range_adapter) e o modelo de make_collectionfunção .
Sintaxe
#include <cliext/adapter>
Requisitos
Cabeçalho:<cliext/adaptador>
Namespace: cliext
Declarações
| Classe | Descrição |
|---|---|
collection_adapter |
Encapsula a coleção BCL (Biblioteca de Classes Base) como um intervalo. |
range_adapter |
Encapsula o intervalo como uma coleção BCL. |
| Função | Descrição |
|---|---|
make_collection |
Cria um adaptador de intervalo usando um par de iteradores. |
Membros
collection_adapter
Encapsula uma coleção .NET para uso como um contêiner STL/CLR. Um collection_adapter é uma classe de modelo que descreve um objeto de contêiner STL/CLR simples. Ele encapsula uma interface de BCL (Biblioteca de Classes Base) e retorna um par de iteradores que você usa para manipular a sequência controlada.
Sintaxe
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>>;
Parâmetros
Coll
O tipo da coleção encapsulada.
Especializações
| carga de trabalho | Descrição |
|---|---|
IEnumerable |
Sequencia por meio de elementos. |
ICollection |
Mantém um grupo de elementos. |
IList |
Mantém um grupo ordenado de elementos. |
IDictionary |
Mantenha um conjunto de pares {key, value}. |
IEnumerable<Value> |
Sequencia por meio de elementos tipados. |
ICollection<Value> |
Mantém um grupo de elementos tipados. |
IList<Value> |
Mantém um grupo ordenado de elementos tipados. |
IDictionary<Value> |
Mantém um conjunto de pares {key, value} tipados. |
Membros
| Definição do tipo | Descrição |
|---|---|
collection_adapter::difference_type |
O tipo de uma distância com sinal entre dois elementos. |
collection_adapter::iterator |
O tipo de um iterador para a sequência controlada. |
collection_adapter::key_type |
O tipo de uma chave de dicionário. |
collection_adapter::mapped_type |
O tipo de um valor de dicionário. |
collection_adapter::reference |
O tipo de uma referência para um elemento. |
collection_adapter::size_type |
O tipo de uma distância com sinal entre dois elementos. |
collection_adapter::value_type |
O tipo de um elemento. |
| Função de membro | Descrição |
|---|---|
collection_adapter::base |
Designa a interface BCL encapsulada. |
collection_adapter::begin |
Designa o início da sequência controlada. |
collection_adapter::collection_adapter |
Constrói um objeto adaptador. |
collection_adapter::end |
Designa o fim da sequência controlada. |
collection_adapter::size |
Conta o número de elementos. |
collection_adapter::swap |
Alterna o conteúdo de dois contêineres. |
| Operador | Descrição |
|---|---|
collection_adapter::operator= |
Substitui o identificador BCL armazenado. |
Comentários
Você usa essa classe de modelo para manipular um contêiner de BCL como um contêiner STL/CLR. O collection_adapter armazena um identificador em uma interface BCL, que, por sua vez, controla uma sequência de elementos. Um objeto collection_adapter X retorna um par de iteradores de entrada X.begin() e X.end() que você usa para visitar os elementos, em ordem. Algumas das especializações também permitem que você escreva X.size() para determinar o comprimento da sequência controlada.
collection_adapter::base
Designa a interface BCL encapsulada.
Sintaxe
Coll^ base();
Comentários
A função membro retorna o identificador de interface BCL armazenado.
Exemplo
// 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
Designa o início da sequência controlada.
Sintaxe
iterator begin();
Comentários
A função de membro retorna um iterador de entrada que designa o primeiro elemento da sequência controlada ou logo após o final de uma sequência vazia.
Exemplo
// 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
Constrói um objeto adaptador.
Sintaxe
collection_adapter();
collection_adapter(collection_adapter<Coll>% right);
collection_adapter(collection_adapter<Coll>^ right);
collection_adapter(Coll^ collection);
Parâmetros
collection
Identificador BCL para encapsular.
right
Objeto a ser copiado.
Comentários
O construtor:
collection_adapter();
inicializa o identificador armazenado com nullptr.
O construtor:
collection_adapter(collection_adapter<Coll>% right);
inicializa o identificador armazenado com right.base().
O construtor:
collection_adapter(collection_adapter<Coll>^ right);
inicializa o identificador armazenado com right->base().
O construtor:
collection_adapter(Coll^ collection);
inicializa o identificador armazenado com collection.
Exemplo
// 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
Os tipos de uma distância com sinal entre dois elementos.
Sintaxe
typedef int difference_type;
Comentários
O tipo descreve uma contagem de elementos com sinal.
Exemplo
// 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
Designa o fim da sequência controlada.
Sintaxe
iterator end();
Comentários
A função de membro retorna um iterador de entrada que aponta para logo após o fim da sequência controlada.
Exemplo
// 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
O tipo de um iterador para a sequência controlada.
Sintaxe
typedef T1 iterator;
Comentários
O tipo descreve um objeto de tipo não especificado T1 que pode servir como um iterador de entrada para a sequência controlada.
Exemplo
// 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
O tipo de uma chave de dicionário.
Sintaxe
typedef Key key_type;
Comentários
O tipo é um sinônimo para o parâmetro Keyde modelo , em uma especialização para IDictionary ou IDictionary<Value>; caso contrário, ele não será definido.
Exemplo
// 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
O tipo de um valor de dicionário.
Sintaxe
typedef Value mapped_type;
Comentários
O tipo é um sinônimo para o parâmetro Valuede modelo , em uma especialização para IDictionary ou IDictionary<Value>; caso contrário, ele não será definido.
Exemplo
// 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=
Substitui o identificador BCL armazenado.
Sintaxe
collection_adapter<Coll>% operator=(collection_adapter<Coll>% right);
Parâmetros
right
Adaptador a ser copiado.
Comentários
O operador membro copia right para o objeto e retorna *this. Você o usa para substituir o identificador BCL armazenado por uma cópia do identificador BCL armazenado no right.
Exemplo
// 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
O tipo de uma referência para um elemento.
Sintaxe
typedef value_type% reference;
Comentários
O tipo descreve uma referência a um elemento.
Exemplo
// 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
Conta o número de elementos.
Sintaxe
size_type size();
Comentários
A função membro retorna o comprimento da sequência controlada. Ele não é definido em uma especialização para IEnumerable ou IEnumerable<Value>.
Exemplo
// 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
O tipo de uma distância com sinal entre dois elementos.
Sintaxe
typedef int size_type;
Comentários
O tipo descreve uma contagem de elementos não negativos.
Exemplo
// 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
Alterna o conteúdo de dois contêineres.
Sintaxe
void swap(collection_adapter<Coll>% right);
Parâmetros
right
Contêiner com o qual trocar conteúdos.
Comentários
A função membro troca os identificadores BCL armazenados entre *this e right.
Exemplo
// 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
O tipo de um elemento.
Sintaxe
typedef Value value_type;
Comentários
O tipo é um sinônimo para o parâmetro Valuede modelo , se presente na especialização; caso contrário, é um sinônimo de System::Object^.
Exemplo
// 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)
Crie um range_adapter com base em um par de iteradores.
Sintaxe
template<typename Iter>
range_adapter<Iter> make_collection(Iter first, Iter last);
Parâmetros
Iter
O tipo dos iteradores encapsulados.
first
Primeiro iterador a ser encapsulado.
last
Segundo iterador a ser encapsulado.
Comentários
O modelo de função retorna gcnew range_adapter<Iter>(first, last). Use-o para construir um objeto range_adapter<Iter> a partir de um par de iteradores.
Exemplo
// 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)
Uma classe de modelo que encapsula um par de iteradores que são usados para implementar várias interfaces BCL (Biblioteca de Classes Base). Você usa o range_adapter para manipular um intervalo STL/CLR como se fosse uma coleção BCL.
Sintaxe
template<typename Iter>
ref class range_adapter
: public
System::Collections::IEnumerable,
System::Collections::ICollection,
System::Collections::Generic::IEnumerable<Value>,
System::Collections::Generic::ICollection<Value>
{ ..... };
Parâmetros
Iter
O tipo associado aos iteradores encapsulados.
Membros
| Função de membro | Descrição |
|---|---|
range_adapter::range_adapter |
Constrói um objeto adaptador. |
| Operador | Descrição |
|---|---|
range_adapter::operator= |
Substitui o par de iteradores armazenado. |
Interfaces
| Interface | Descrição |
|---|---|
| IEnumerable | Itera por meio de elementos na coleção. |
| ICollection | Mantém um grupo de elementos. |
| IEnumerable<T> | Itera por meio de elementos tipados na coleção. |
| ICollection<T> | Mantém um grupo de elementos tipados. |
Comentários
O range_adapter armazena um par de iteradores, que, por sua vez, delimitam uma sequência de elementos. O objeto implementa quatro interfaces BCL que permitem iterar por meio dos elementos, em ordem. Você usa essa classe de modelo para manipular intervalos STL/CLR muito parecidos com contêineres BCL.
range_adapter::operator=
Substitui o par de iteradores armazenado.
Sintaxe
range_adapter<Iter>% operator=(range_adapter<Iter>% right);
Parâmetros
right
Adaptador a ser copiado.
Comentários
O operador membro copia right para o objeto e retorna *this. Você o usa para substituir o par de iteradores armazenado por uma cópia do par de iteradores armazenado no right.
Exemplo
// 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
Constrói um objeto adaptador.
Sintaxe
range_adapter();
range_adapter(range_adapter<Iter>% right);
range_adapter(range_adapter<Iter>^ right);
range_adapter(Iter first, Iter last);
Parâmetros
first
Primeiro iterador a ser encapsulado.
last
Segundo iterador a ser encapsulado.
right
Objeto a ser copiado.
Comentários
O construtor:
range_adapter();
inicializa o par de iteradores armazenados com iteradores construídos padrão.
O construtor:
range_adapter(range_adapter<Iter>% right);
inicializa o par de iteradores armazenado copiando o par armazenado right.
O construtor:
range_adapter(range_adapter<Iter>^ right);
inicializa o par de iteradores armazenado copiando o par armazenado *right.
O construtor:
range_adapter(Iter^ first, last);
inicializa o par de iteradores armazenado com first e last.
Exemplo
// 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