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.
A classe de modelo descreve um objeto que controla uma sequência de tamanho variável de elementos que têm acesso bidirecional. Você usa o contêiner set para gerenciar uma sequência de elementos como uma árvore ordenada (quase) balanceada de nós, cada um armazenando um elemento.
Na descrição abaixo, GValue é o mesmo GKeyque , que por sua vez é o mesmo Key que a menos que o último seja um tipo ref, caso em que é Key^.
Sintaxe
template<typename Key>
ref class set
: 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::ITree<Gkey, GValue>
{ ..... };
Parâmetros
Key
O tipo do componente de chave de um elemento na sequência controlada.
Requisitos
Cabeçalho:<cliext/set>
Namespace: cliext
Declarações
| Definição do tipo | Descrição |
|---|---|
set::const_iterator |
O tipo de um iterador de constante para a sequência controlada. |
set::const_reference |
O tipo de uma referência de constante para um elemento. |
set::const_reverse_iterator |
O tipo de um iterador reverso de constante para a sequência controlada. |
set::difference_type |
O tipo de uma distância (possivelmente com sinal) entre dois elementos. |
set::generic_container |
O tipo da interface genérica para o contêiner. |
set::generic_iterator |
O tipo de um iterador da interface genérica para o contêiner. |
set::generic_reverse_iterator |
O tipo de um iterador reverso da interface genérica para o contêiner. |
set::generic_value |
O tipo de um elemento da interface genérica para o contêiner. |
set::iterator |
O tipo de um iterador para a sequência controlada. |
set::key_compare |
O delegado de ordenação para duas chaves. |
set::key_type |
O tipo de uma chave de classificação. |
set::reference |
O tipo de uma referência para um elemento. |
set::reverse_iterator |
O tipo de um iterador inverso para a sequência controlada. |
set::size_type |
O tipo de uma distância (não negativa) entre dois elementos. |
set::value_compare |
O delegado de ordenação para dois valores de elemento. |
set::value_type |
O tipo de um elemento. |
| Função de membro | Descrição |
|---|---|
set::begin |
Designa o início da sequência controlada. |
set::clear |
Remove todos os elementos. |
set::count |
Conta os elementos que correspondem a uma chave especificada. |
set::empty |
Testa se nenhum elemento está presente. |
set::end |
Designa o fim da sequência controlada. |
set::equal_range |
Localiza o intervalo que corresponde a uma chave especificada. |
set::erase |
Remove os elementos em posições especificadas. |
set::find |
Localiza um elemento que corresponde a uma chave especificada. |
set::insert |
Adiciona elementos. |
set::key_comp |
Copia o delegado de ordenação de duas chaves. |
set::lower_bound |
Localiza o início do intervalo que corresponde a uma chave especificada. |
set::make_value |
Constrói um objeto de valor. |
set::rbegin |
Designa o início da sequência controlada invertida. |
set::rend |
Designa o fim da sequência controlada invertida. |
set::set |
Constrói um objeto contêiner. |
set::size |
Conta o número de elementos. |
set::swap |
Alterna o conteúdo de dois contêineres. |
set::to_array |
Copia a sequência controlada para uma nova matriz. |
set::upper_bound |
Localiza fim do intervalo que corresponde a uma chave especificada. |
set::value_comp |
Copia o delegado de ordenação para dois valores de elemento. |
| Operador | Descrição |
|---|---|
set::operator= |
Substitui a sequência controlada. |
operator!= (conjunto) |
Determina se um set objeto não é igual a outro set objeto. |
operator< (conjunto) |
Determina se um objeto set é menor que outro objeto set. |
operator<= (conjunto) |
Determina se um objeto set é menor ou igual a outro objeto set. |
operator== (conjunto) |
Determina se um objeto set é igual a outro objeto set. |
operator> (conjunto) |
Determina se um objeto set é maior que outro objeto set. |
operator>= (conjunto) |
Determina se um objeto set é maior ou igual a outro objeto set. |
Interfaces
| Interface | Descrição |
|---|---|
| ICloneable | Duplica um objeto. |
| IEnumerable | Sequencie por meio de elementos. |
| ICollection | Mantenha grupo de elementos. |
| IEnumerable<T> | Sequencie por meio de elementos de tipo. |
| ICollection<T> | Manter grupo de elementos tipados. |
ITree<Key, Value> |
Manter contêiner genérico. |
Comentários
O objeto aloca e libera o armazenamento para a sequência que ele controla como nós individuais. Insere elementos em uma árvore (quase) balanceada que mantém ordenada alterando os links entre nós, nunca copiando o conteúdo de um nó para outro. Isso significa que você pode inserir e remover elementos livremente sem prejudicar os demais elementos.
O objeto ordena a sequência que controla chamando um objeto delegado armazenado do tipo set::key_compare. Você pode especificar o objeto delegado armazenado ao construir o conjunto; se não especificar nenhum objeto delegado, o padrão será a comparação operator<(key_type, key_type). Você acessa esse objeto armazenado chamando a função set::key_compmembro .
Esse objeto delegado deve impor uma ordenação fraca estrita em chaves do tipo set::key_type. Isso significa que, para duas chaves X e Y quaisquer:
key_comp()(X, Y) retorna o mesmo resultado booliano em cada chamada.
Se key_comp()(X, Y) for verdadeiro, key_comp()(Y, X) precisará ser falso.
Se key_comp()(X, Y) for verdadeiro, X será ordenado antes de Y.
Se !key_comp()(X, Y) && !key_comp()(Y, X) for verdadeiro, então X e Y terão ordenação equivalente.
Para qualquer elemento X que preceder Y na sequência controlada, key_comp()(Y, X) será falso. (Para o objeto delegado padrão, as chaves nunca diminuem de valor.) Ao contrário do conjunto de classes de modelo, um objeto de classe set de modelo não exige que as chaves de todos os elementos sejam exclusivas. (Duas ou mais chaves podem ter ordenação equivalente.)
Cada elemento serve como uma chave e um valor. A sequência é representada de uma forma que permite a pesquisa, inserção e remoção de um elemento arbitrário no tempo logarítmico. Ou seja, o número de operações é proporcional ao logaritmo do número de elementos na sequência. Além disso, Inserir um elemento não invalida iteradores, e remover um elemento invalida apenas os iteradores que apontam o elemento removido.
A set dá suporte a iteradores bidirecionais, o que significa que você pode passar para elementos adjacentes com um iterador que designa um elemento na sequência controlada. Um nó de cabeçalho especial corresponde ao iterador retornado por end(). É possível decrementar esse iterador para alcançar o último elemento na sequência controlada, se presente. Você pode incrementar um set iterador para alcançar o nó principal e, em seguida, ele será comparado a end(). Mas você não pode desreferenciar o iterador retornado por end().
Você não pode se referir a um set elemento diretamente, dada sua posição numérica. Isso requer um iterador de acesso aleatório.
Um set iterador armazena um identificador em seu nó associado set , que, por sua vez, armazena um identificador em seu contêiner associado. Você somente pode usar iteradores com seus objetos de contêiner associados. Um set iterador permanece válido desde que seu nó associado set esteja associado a algum conjunto. Além disso, um iterador válido é desreferenciável. Você pode usá-lo para acessar ou alterar o valor do elemento que ele designa, desde que não seja igual a end().
Apagar ou remover um elemento chama o destruidor para o valor armazenado. Destruir o contêiner apaga todos os elementos. Portanto, um contêiner cujo tipo de elemento é uma classe ref garante que nenhum elemento sobreviva ao contêiner. No entanto, um contêiner de alças não destrói seus elementos.
Membros
set::begin
Designa o início da sequência controlada.
Sintaxe
iterator begin();
Comentários
A função membro retorna um iterador bidirecional que designa o primeiro elemento da sequência controlada ou logo após o final de uma sequência vazia. Use-o para obter um iterador que designa o início current da sequência controlada, mas seu status poderá mudar se o tamanho da sequência controlada for alterado.
Exemplo
// cliext_set_begin.cpp
// compile with: /clr
#include <cliext/set>
typedef cliext::set<wchar_t> Myset;
int main()
{
Myset c1;
c1.insert(L'a');
c1.insert(L'b');
c1.insert(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
Myset::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
set::clear
Remove todos os elementos.
Sintaxe
void clear();
Comentários
A função membro chama efetivamente erase(begin(), end()). Use para garantir que a sequência controlada esteja vazia.
Exemplo
// cliext_set_clear.cpp
// compile with: /clr
#include <cliext/set>
typedef cliext::set<wchar_t> Myset;
int main()
{
Myset c1;
c1.insert(L'a');
c1.insert(L'b');
c1.insert(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.insert(L'a');
c1.insert(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
set::const_iterator
O tipo de um iterador de constante para a sequência controlada.
Sintaxe
typedef T2 const_iterator;
Comentários
O tipo descreve um objeto de tipo não especificado T2 que pode servir como um iterador bidirecional constante para a sequência controlada.
Exemplo
// cliext_set_const_iterator.cpp
// compile with: /clr
#include <cliext/set>
typedef cliext::set<wchar_t> Myset;
int main()
{
Myset c1;
c1.insert(L'a');
c1.insert(L'b');
c1.insert(L'c');
// display contents " a b c"
Myset::const_iterator cit = c1.begin();
for (; cit != c1.end(); ++cit)
System::Console::Write("{0} ", *cit);
System::Console::WriteLine();
return (0);
}
a b c
set::const_reference
O tipo de uma referência de constante para um elemento.
Sintaxe
typedef value_type% const_reference;
Comentários
O tipo descreve uma referência de constante para um elemento.
Exemplo
// cliext_set_const_reference.cpp
// compile with: /clr
#include <cliext/set>
typedef cliext::set<wchar_t> Myset;
int main()
{
Myset c1;
c1.insert(L'a');
c1.insert(L'b');
c1.insert(L'c');
// display initial contents " a b c"
Myset::const_iterator cit = c1.begin();
for (; cit != c1.end(); ++cit)
{ // get a const reference to an element
Myset::const_reference cref = *cit;
System::Console::Write("{0} ", cref);
}
System::Console::WriteLine();
return (0);
}
a b c
set::const_reverse_iterator
O tipo de um iterador reverso de constante para a sequência controlada.
Sintaxe
typedef T4 const_reverse_iterator;
Comentários
O tipo descreve um objeto de tipo não especificado T4 que pode servir como um iterador reverso de constante para a sequência controlada.
Exemplo
// cliext_set_const_reverse_iterator.cpp
// compile with: /clr
#include <cliext/set>
typedef cliext::set<wchar_t> Myset;
int main()
{
Myset c1;
c1.insert(L'a');
c1.insert(L'b');
c1.insert(L'c');
// display contents " a b c" reversed
Myset::const_reverse_iterator crit = c1.rbegin();
for (; crit != c1.rend(); ++crit)
System::Console::Write("{0} ", *crit);
System::Console::WriteLine();
return (0);
}
c b a
set::count
Localiza o número de elementos que correspondem a uma chave especificada.
Sintaxe
size_type count(key_type key);
Parâmetros
key
O valor chave a ser pesquisado.
Comentários
A função membro retorna o número de elementos na sequência controlada que têm ordenação equivalente com key. Usado para determinar o número de elementos que estão na sequência controlada no momento e que correspondem a uma chave especificada.
Exemplo
// cliext_set_count.cpp
// compile with: /clr
#include <cliext/set>
typedef cliext::set<wchar_t> Myset;
int main()
{
Myset c1;
c1.insert(L'a');
c1.insert(L'b');
c1.insert(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("count(L'A') = {0}", c1.count(L'A'));
System::Console::WriteLine("count(L'b') = {0}", c1.count(L'b'));
System::Console::WriteLine("count(L'C') = {0}", c1.count(L'C'));
return (0);
}
a b c
count(L'A') = 0
count(L'b') = 1
count(L'C') = 0
set::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 possivelmente negativa.
Exemplo
// cliext_set_difference_type.cpp
// compile with: /clr
#include <cliext/set>
typedef cliext::set<wchar_t> Myset;
int main()
{
Myset c1;
c1.insert(L'a');
c1.insert(L'b');
c1.insert(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
Myset::difference_type diff = 0;
for (Myset::iterator it = c1.begin(); it != c1.end(); ++it)
++diff;
System::Console::WriteLine("end()-begin() = {0}", diff);
// compute negative difference
diff = 0;
for (Myset::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
set::empty
Testa se nenhum elemento está presente.
Sintaxe
bool empty();
Comentários
A função membro retorna verdadeiro para uma sequência controlada vazia. É equivalente a size() == 0. Você o usa para testar se o set está vazio.
Exemplo
// cliext_set_empty.cpp
// compile with: /clr
#include <cliext/set>
typedef cliext::set<wchar_t> Myset;
int main()
{
Myset c1;
c1.insert(L'a');
c1.insert(L'b');
c1.insert(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
set::end
Designa o fim da sequência controlada.
Sintaxe
iterator end();
Comentários
A função membro retorna um iterador bidirecional que aponta para logo após o fim da sequência controlada. Você o usa para obter um iterador que designa o final da sequência controlada; Seu status não será alterado se o comprimento da sequência controlada for alterado.
Exemplo
// cliext_set_end.cpp
// compile with: /clr
#include <cliext/set>
typedef cliext::set<wchar_t> Myset;
int main()
{
Myset c1;
c1.insert(L'a');
c1.insert(L'b');
c1.insert(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
Myset::iterator it = c1.end();
--it;
System::Console::WriteLine("*-- --end() = {0}", *--it);
System::Console::WriteLine("*--end() = {0}", *++it);
return (0);
}
a b c
*-- --end() = b
*--end() = c
set::equal_range
Localiza o intervalo que corresponde a uma chave especificada.
Sintaxe
cliext::pair<iterator, iterator> equal_range(key_type key);
Parâmetros
key
O valor chave a ser pesquisado.
Comentários
A função membro retorna um par de iteradores cliext::pair<iterator, iterator>(lower_bound(key), upper_bound(key)). Use-a para determinar o intervalo de elementos que estão atualmente na sequência controlada e que correspondem a uma chave especificada.
Exemplo
// cliext_set_equal_range.cpp
// compile with: /clr
#include <cliext/set>
typedef cliext::set<wchar_t> Myset;
typedef Myset::pair_iter_iter Pairii;
int main()
{
Myset c1;
c1.insert(L'a');
c1.insert(L'b');
c1.insert(L'c');
// display initial contents " a b c"
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// display results of failed search
Pairii pair1 = c1.equal_range(L'x');
System::Console::WriteLine("equal_range(L'x') empty = {0}",
pair1.first == pair1.second);
// display results of successful search
pair1 = c1.equal_range(L'b');
for (; pair1.first != pair1.second; ++pair1.first)
System::Console::Write("{0} ", *pair1.first);
System::Console::WriteLine();
return (0);
}
a b c
equal_range(L'x') empty = True
b
set::erase
Remove os elementos em posições especificadas.
Sintaxe
iterator erase(iterator where);
iterator erase(iterator first, iterator last);
size_type erase(key_type key)
Parâmetros
first
Início do intervalo a ser apagado.
key
O valor da chave a ser apagada.
last
Fim do intervalo a ser apagado.
where
Elemento a ser apagado.
Comentários
A primeira função membro remove o elemento da sequência controlada apontada por where, e retorna um iterador que designa o primeiro elemento restante além do elemento removido ou end() se esse elemento não existir. Use para remover apenas um elemento.
A segunda função membro remove os elementos da sequência controlada no intervalo [first, last) e retorna um iterador que designa o primeiro elemento restante além de quaisquer elementos removidos ou end() se esse elemento não existir. Use para remover zero ou mais elementos contíguos.
A terceira função membro remove qualquer elemento da sequência controlada cuja chave tenha ordenação equivalente a key, e retorna uma contagem do número de elementos removidos. Use-a para remover e contar todos os elementos que correspondem a uma chave especificada.
Cada apagamento de elemento leva tempo proporcional ao logaritmo do número de elementos na sequência controlada.
Exemplo
// cliext_set_erase.cpp
// compile with: /clr
#include <cliext/set>
typedef cliext::set<wchar_t> Myset;
int main()
{
Myset c1;
c1.insert(L'a');
c1.insert(L'b');
c1.insert(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.insert(L'd');
c1.insert(L'e');
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// erase all but end
Myset::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
set::find
Localiza um elemento que corresponde a uma chave especificada.
Sintaxe
iterator find(key_type key);
Parâmetros
key
O valor chave a ser pesquisado.
Comentários
Se pelo menos um elemento na sequência controlada tiver uma ordenação equivalente com key, a função membro retornará um iterador designando um desses elementos; caso contrário, ela retornará end(). Use-a para localizar um elemento que está atualmente na sequência controlada e que corresponde a uma chave especificada.
Exemplo
// cliext_set_find.cpp
// compile with: /clr
#include <cliext/set>
typedef cliext::set<wchar_t> Myset;
int main()
{
Myset c1;
c1.insert(L'a');
c1.insert(L'b');
c1.insert(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("find {0} = {1}",
L'A', c1.find(L'A') != c1.end());
System::Console::WriteLine("find {0} = {1}",
L'b', *c1.find(L'b'));
System::Console::WriteLine("find {0} = {1}",
L'C', c1.find(L'C') != c1.end());
return (0);
}
a b c
find A = False
find b = b
find C = False
set::generic_container
O tipo da interface genérica para o contêiner.
Sintaxe
typedef Microsoft::VisualC::StlClr::
ITree<GKey, GValue>
generic_container;
Comentários
O tipo descreve a interface genérica para essa classe de contêiner de modelo.
Exemplo
// cliext_set_generic_container.cpp
// compile with: /clr
#include <cliext/set>
typedef cliext::set<wchar_t> Myset;
int main()
{
Myset c1;
c1.insert(L'a');
c1.insert(L'b');
c1.insert(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
Myset::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(L'd');
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// modify original and display generic
c1.insert(L'e');
for each (wchar_t elem in gc1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
return (0);
}
a b c
a b c
a b c d
a b c d e
set::generic_iterator
O tipo de um iterador a ser usado com a interface genérica do contêiner.
Sintaxe
typedef Microsoft::VisualC::StlClr::Generic::
ContainerBidirectionalIterator<generic_value>
generic_iterator;
Comentários
O tipo descreve um iterador genérico que pode ser usado com a interface genérica para essa classe de contêiner de modelo.
Exemplo
// cliext_set_generic_iterator.cpp
// compile with: /clr
#include <cliext/set>
typedef cliext::set<wchar_t> Myset;
int main()
{
Myset c1;
c1.insert(L'a');
c1.insert(L'b');
c1.insert(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
Myset::generic_container^ gc1 = %c1;
for each (wchar_t elem in gc1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// get an element and display it
Myset::generic_iterator gcit = gc1->begin();
Myset::generic_value gcval = *gcit;
System::Console::WriteLine("{0} ", gcval);
return (0);
}
a b c
a b c
a
set::generic_reverse_iterator
O tipo de um iterador reverso a ser usado com a interface genérica para o contêiner.
Sintaxe
typedef Microsoft::VisualC::StlClr::Generic::
ReverseRandomAccessIterator<generic_value>
generic_reverse_iterator;
Comentários
O tipo descreve um iterador reverso genérico que pode ser usado com a interface genérica para essa classe de contêiner de modelo.
Exemplo
// cliext_set_generic_reverse_iterator.cpp
// compile with: /clr
#include <cliext/set>
typedef cliext::set<wchar_t> Myset;
int main()
{
Myset c1;
c1.insert(L'a');
c1.insert(L'b');
c1.insert(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
Myset::generic_container^ gc1 = %c1;
for each (wchar_t elem in gc1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// get an element and display it
Myset::generic_reverse_iterator gcit = gc1->rbegin();
Myset::generic_value gcval = *gcit;
System::Console::WriteLine("{0} ", gcval);
return (0);
}
a b c
a b c
c
set::generic_value
O tipo de um elemento para uso com a interface genérica do contêiner.
Sintaxe
typedef GValue generic_value;
Comentários
O tipo descreve um objeto de tipo GValue que mostra o valor do elemento armazenado a ser usado com a interface genérica para essa classe de contêiner de modelo.
Exemplo
// cliext_set_generic_value.cpp
// compile with: /clr
#include <cliext/set>
typedef cliext::set<wchar_t> Myset;
int main()
{
Myset c1;
c1.insert(L'a');
c1.insert(L'b');
c1.insert(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
Myset::generic_container^ gc1 = %c1;
for each (wchar_t elem in gc1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// get an element and display it
Myset::generic_iterator gcit = gc1->begin();
Myset::generic_value gcval = *gcit;
System::Console::WriteLine("{0} ", gcval);
return (0);
}
a b c
a b c
a
set::insert
Adiciona elementos.
Sintaxe
cliext::pair<iterator, bool> insert(value_type val);
iterator insert(iterator where, value_type val);
template<typename InIter>
void insert(InIter first, InIter last);
void insert(System::Collections::Generic::IEnumerable<value_type>^ right);
Parâmetros
first
Início do intervalo a ser inserido.
last
Fim do intervalo a ser inserido.
right
Enumeração a ser inserida.
val
Valor da chave a ser inserido.
where
Em que parte do contêiner inserir (somente uma dica).
Comentários
Cada uma das funções membro insere uma sequência especificada pelos operandos restantes.
A primeira função membro tenta inserir um elemento com valor val e retorna um par de valores X. Se X.second for verdadeiro, X.first designará o elemento recém-inserido, caso contrário, X.first designará um elemento com uma ordenação equivalente já existente, e nenhum novo elemento será inserido. Use para inserir um único elemento.
A segunda função membro insere um elemento com value val, usando where como dica (para melhorar o desempenho) e retorna um iterador que designa o elemento recém-inserido. Você o usa para inserir um único elemento que pode estar ao lado de um elemento que você conhece.
A terceira função membro insere a sequência [first, last). Use-a para inserir zero ou mais elementos copiados de outra sequência.
A quarta função membro insere a sequência designada pelo right. Use-a para inserir uma sequência descrita por um enumerador.
Cada inserção de elemento leva um tempo proporcional ao logaritmo do número de elementos na sequência controlada. A inserção pode ocorrer em tempo constante amortizado, no entanto, dada uma dica que designa um elemento próximo ao ponto de inserção.
Exemplo
// cliext_set_insert.cpp
// compile with: /clr
#include <cliext/set>
typedef cliext::set<wchar_t> Myset;
typedef Myset::pair_iter_bool Pairib;
int main()
{
Myset c1;
c1.insert(L'a');
c1.insert(L'b');
c1.insert(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, unique and duplicate
Pairib pair1 = c1.insert(L'x');
System::Console::WriteLine("insert(L'x') = [{0} {1}]",
*pair1.first, pair1.second);
pair1 = c1.insert(L'b');
System::Console::WriteLine("insert(L'b') = [{0} {1}]",
*pair1.first, pair1.second);
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// insert a single value with hint
System::Console::WriteLine("insert(begin(), L'y') = {0}",
*c1.insert(c1.begin(), L'y'));
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// insert an iterator range
Myset c2;
Myset::iterator it = c1.end();
c2.insert(c1.begin(), --it);
for each (wchar_t elem in c2)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// insert an enumeration
Myset c3;
c3.insert( // NOTE: cast is not needed
(System::Collections::Generic::IEnumerable<wchar_t>^)%c1);
for each (wchar_t elem in c3)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
return (0);
}
a b c
insert(L'x') = [x True]
insert(L'b') = [b False]
a b c x
insert(begin(), L'y') = y
a b c x y
a b c x
a b c x y
set::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 bidirecional para a sequência controlada.
Exemplo
// cliext_set_iterator.cpp
// compile with: /clr
#include <cliext/set>
typedef cliext::set<wchar_t> Myset;
int main()
{
Myset c1;
c1.insert(L'a');
c1.insert(L'b');
c1.insert(L'c');
// display contents " a b c"
Myset::iterator it = c1.begin();
for (; it != c1.end(); ++it)
System::Console::Write("{0} ", *it);
System::Console::WriteLine();
return (0);
}
a b c
set::key_comp
Copia o delegado de ordenação de duas chaves.
Sintaxe
key_compare^key_comp();
Comentários
A função membro retorna o delegado de ordenação usado para ordenar a sequência controlada. Use-o para comparar duas chaves.
Exemplo
// cliext_set_key_comp.cpp
// compile with: /clr
#include <cliext/set>
typedef cliext::set<wchar_t> Myset;
int main()
{
Myset c1;
Myset::key_compare^ kcomp = c1.key_comp();
System::Console::WriteLine("compare(L'a', L'a') = {0}",
kcomp(L'a', L'a'));
System::Console::WriteLine("compare(L'a', L'b') = {0}",
kcomp(L'a', L'b'));
System::Console::WriteLine("compare(L'b', L'a') = {0}",
kcomp(L'b', L'a'));
System::Console::WriteLine();
// test a different ordering rule
Myset c2 = cliext::greater<wchar_t>();
kcomp = c2.key_comp();
System::Console::WriteLine("compare(L'a', L'a') = {0}",
kcomp(L'a', L'a'));
System::Console::WriteLine("compare(L'a', L'b') = {0}",
kcomp(L'a', L'b'));
System::Console::WriteLine("compare(L'b', L'a') = {0}",
kcomp(L'b', L'a'));
return (0);
}
compare(L'a', L'a') = False
compare(L'a', L'b') = True
compare(L'b', L'a') = False
compare(L'a', L'a') = False
compare(L'a', L'b') = False
compare(L'b', L'a') = True
set::key_compare
O delegado de ordenação para duas chaves.
Sintaxe
Microsoft::VisualC::StlClr::BinaryDelegate<GKey, GKey, bool>
key_compare;
Comentários
O tipo é um sinônimo do delegado que determina a ordenação dos respectivos argumentos de chave.
Exemplo
// cliext_set_key_compare.cpp
// compile with: /clr
#include <cliext/set>
typedef cliext::set<wchar_t> Myset;
int main()
{
Myset c1;
Myset::key_compare^ kcomp = c1.key_comp();
System::Console::WriteLine("compare(L'a', L'a') = {0}",
kcomp(L'a', L'a'));
System::Console::WriteLine("compare(L'a', L'b') = {0}",
kcomp(L'a', L'b'));
System::Console::WriteLine("compare(L'b', L'a') = {0}",
kcomp(L'b', L'a'));
System::Console::WriteLine();
// test a different ordering rule
Myset c2 = cliext::greater<wchar_t>();
kcomp = c2.key_comp();
System::Console::WriteLine("compare(L'a', L'a') = {0}",
kcomp(L'a', L'a'));
System::Console::WriteLine("compare(L'a', L'b') = {0}",
kcomp(L'a', L'b'));
System::Console::WriteLine("compare(L'b', L'a') = {0}",
kcomp(L'b', L'a'));
return (0);
}
compare(L'a', L'a') = False
compare(L'a', L'b') = True
compare(L'b', L'a') = False
compare(L'a', L'a') = False
compare(L'a', L'b') = False
compare(L'b', L'a') = True
set::key_type
O tipo de uma chave de classificação.
Sintaxe
typedef Key key_type;
Comentários
O tipo é um sinônimo do parâmetro de modeloKey.
Exemplo
// cliext_set_key_type.cpp
// compile with: /clr
#include <cliext/set>
typedef cliext::set<wchar_t> Myset;
int main()
{
Myset c1;
c1.insert(L'a');
c1.insert(L'b');
c1.insert(L'c');
// display contents " a b c" using key_type
for (Myset::iterator it = c1.begin(); it != c1.end(); ++it)
{ // store element in key_type object
Myset::key_type val = *it;
System::Console::Write("{0} ", val);
}
System::Console::WriteLine();
return (0);
}
a b c
set::lower_bound
Localiza o início do intervalo que corresponde a uma chave especificada.
Sintaxe
iterator lower_bound(key_type key);
Parâmetros
key
O valor chave a ser pesquisado.
Comentários
A função membro determina o primeiro elemento X na sequência controlada que tem ordenação equivalente a key. Se esse elemento não existir, ele retornará end(); caso contrário, ele retornará um iterador que designa X. Use-a para localizar o início de uma sequência de elementos contidos atualmente na sequência controlada e que corresponde a uma chave especificada.
Exemplo
// cliext_set_lower_bound.cpp
// compile with: /clr
#include <cliext/set>
typedef cliext::set<wchar_t> Myset;
int main()
{
Myset c1;
c1.insert(L'a');
c1.insert(L'b');
c1.insert(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("lower_bound(L'x')==end() = {0}",
c1.lower_bound(L'x') == c1.end());
System::Console::WriteLine("*lower_bound(L'a') = {0}",
*c1.lower_bound(L'a'));
System::Console::WriteLine("*lower_bound(L'b') = {0}",
*c1.lower_bound(L'b'));
return (0);
}
a b c
lower_bound(L'x')==end() = True
*lower_bound(L'a') = a
*lower_bound(L'b') = b
set::make_value
Constrói um objeto de valor.
Sintaxe
static value_type make_value(key_type key);
Parâmetros
key
Valor da chave a ser usada.
Comentários
A função membro retorna um value_type objeto cuja chave é key. Use-a para compor um objeto adequado para uso com várias outras funções membro.
Exemplo
// cliext_set_make_value.cpp
// compile with: /clr
#include <cliext/set>
typedef cliext::set<wchar_t> Myset;
int main()
{
Myset c1;
c1.insert(Myset::make_value(L'a'));
c1.insert(Myset::make_value(L'b'));
c1.insert(Myset::make_value(L'c'));
// display contents " a b c"
for each (Myset::value_type elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
return (0);
}
a b c
set::operator=
Substitui a sequência controlada.
Sintaxe
set<Key>% operator=(set<Key>% right);
Parâmetros
right
O contêiner a ser copiado.
Comentários
O operador membro copia right para o objeto e retorna *this. Você pode usá-lo para substituir a sequência controlada por uma cópia da sequência controlada em right.
Exemplo
// cliext_set_operator_as.cpp
// compile with: /clr
#include <cliext/set>
typedef cliext::set<wchar_t> Myset;
int main()
{
Myset c1;
c1.insert(L'a');
c1.insert(L'b');
c1.insert(L'c');
// display contents " a b c"
for each (Myset::value_type elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// assign to a new container
Myset c2;
c2 = c1;
// display contents " a b c"
for each (Myset::value_type elem in c2)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
return (0);
}
a b c
a b c
set::rbegin
Designa o início da sequência controlada invertida.
Sintaxe
reverse_iterator rbegin();
Comentários
A função membro retorna um iterador reverso que designa o último elemento da sequência controlada ou logo após o início de uma sequência vazia. Portanto, ele designa o beginning da sequência invertida. Use-o para obter um iterador que designa o início current da sequência controlada que é vista na ordem inversa, mas seu status poderá mudar se o tamanho da sequência controlada for alterado.
Exemplo
// cliext_set_rbegin.cpp
// compile with: /clr
#include <cliext/set>
typedef cliext::set<wchar_t> Myset;
int main()
{
Myset c1;
c1.insert(L'a');
c1.insert(L'b');
c1.insert(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
Myset::reverse_iterator rit = c1.rbegin();
System::Console::WriteLine("*rbegin() = {0}", *rit);
System::Console::WriteLine("*++rbegin() = {0}", *++rit);
return (0);
}
a b c
*rbegin() = c
*++rbegin() = b
set::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_set_reference.cpp
// compile with: /clr
#include <cliext/set>
typedef cliext::set<wchar_t> Myset;
int main()
{
Myset c1;
c1.insert(L'a');
c1.insert(L'b');
c1.insert(L'c');
// display initial contents " a b c"
Myset::iterator it = c1.begin();
for (; it != c1.end(); ++it)
{ // get a reference to an element
Myset::reference ref = *it;
System::Console::Write("{0} ", ref);
}
System::Console::WriteLine();
return (0);
}
a b c
set::rend
Designa o fim da sequência controlada invertida.
Sintaxe
reverse_iterator rend();
Comentários
A função membro retorna um iterador reverso que aponta para logo após o início da sequência controlada. Portanto, ele designa o end da sequência invertida. Use-o para obter um iterador que designa o fim current da sequência controlada vista na ordem inversa, mas seu status poderá mudar se o tamanho da sequência controlada for alterado.
Exemplo
// cliext_set_rend.cpp
// compile with: /clr
#include <cliext/set>
typedef cliext::set<wchar_t> Myset;
int main()
{
Myset c1;
c1.insert(L'a');
c1.insert(L'b');
c1.insert(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
Myset::reverse_iterator rit = c1.rend();
--rit;
System::Console::WriteLine("*-- --rend() = {0}", *--rit);
System::Console::WriteLine("*--rend() = {0}", *++rit);
return (0);
}
a b c
*-- --rend() = b
*--rend() = a
set::reverse_iterator
O tipo de um iterador inverso para a sequência controlada.
Sintaxe
typedef T3 reverse_iterator;
Comentários
O tipo descreve um objeto de tipo T3 não especificado que pode servir como um iterador reverso para a sequência controlada.
Exemplo
// cliext_set_reverse_iterator.cpp
// compile with: /clr
#include <cliext/set>
typedef cliext::set<wchar_t> Myset;
int main()
{
Myset c1;
c1.insert(L'a');
c1.insert(L'b');
c1.insert(L'c');
// display contents " a b c" reversed
Myset::reverse_iterator rit = c1.rbegin();
for (; rit != c1.rend(); ++rit)
System::Console::Write("{0} ", *rit);
System::Console::WriteLine();
return (0);
}
c b a
set::set
Constrói um objeto contêiner.
Sintaxe
set();
explicit set(key_compare^ pred);
set(set<Key>% right);
set(set<Key>^ right);
template<typename InIter>
setset(InIter first, InIter last);
template<typename InIter>
set(InIter first, InIter last,
key_compare^ pred);
set(System::Collections::Generic::IEnumerable<GValue>^ right);
set(System::Collections::Generic::IEnumerable<GValue>^ right,
key_compare^ pred);
Parâmetros
first
Início do intervalo a ser inserido.
last
Fim do intervalo a ser inserido.
pred
Predicado de ordenação para a sequência controlada.
right
Objeto ou intervalo a inserir.
Comentários
O construtor:
set();
inicializa a sequência controlada sem elementos, com o predicado de ordenação padrão key_compare(). Use para especificar uma sequência controlada inicial vazia, com o predicado de ordenação padrão.
O construtor:
explicit set(key_compare^ pred);
inicializa a sequência controlada sem elementos, com o predicado de ordenação pred. Use-o para especificar uma sequência controlada inicial vazia, com o predicado de ordenação especificado.
O construtor:
set(set<Key>% right);
inicializa a sequência controlada com a sequência [right.begin(), right.end()), com o predicado de ordenação padrão. Você o usa para especificar uma sequência controlada inicial que é uma cópia da sequência controlada pelo set objeto right, com o predicado de ordenação padrão.
O construtor:
set(set<Key>^ right);
inicializa a sequência controlada com a sequência [right->begin(), right->end()), com o predicado de ordenação padrão. Você o usa para especificar uma sequência controlada inicial que é uma cópia da sequência controlada pelo set objeto right, com o predicado de ordenação padrão.
O construtor:
template<typename InIter> set(InIter first, InIter last);
inicializa a sequência controlada com a sequência [first, last), com o predicado de ordenação padrão. Use-o para tornar a sequência controlada uma cópia de outra sequência, com o predicado de ordenação padrão.
O construtor:
template<typename InIter> set(InIter first, InIter last, key_compare^ pred);
inicializa a sequência controlada com a sequência [first, last), com o predicado de ordenação pred. Use-o para tornar a sequência controlada uma cópia de outra sequência, com o predicado de ordenação especificado.
O construtor:
set(System::Collections::Generic::IEnumerable<Key>^ right);
inicializa a sequência controlada com a sequência designada pelo enumerador right, com o predicado de ordenação padrão. Use para tornar a sequência controlada uma cópia de outra sequência descrita por um enumerador, com o predicado de ordenação padrão.
O construtor:
set(System::Collections::Generic::IEnumerable<Key>^ right, key_compare^ pred);
inicializa a sequência controlada com a sequência designada pelo enumerador right, com o predicado de ordenação pred. Use para tornar a sequência controlada uma cópia de outra sequência descrita por um enumerador, com o predicado de ordenação especificado.
Exemplo
// cliext_set_construct.cpp
// compile with: /clr
#include <cliext/set>
typedef cliext::set<wchar_t> Myset;
int main()
{
// construct an empty container
Myset c1;
System::Console::WriteLine("size() = {0}", c1.size());
c1.insert(L'a');
c1.insert(L'b');
c1.insert(L'c');
for each (wchar_t elem in c1)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// construct with an ordering rule
Myset c2 = cliext::greater_equal<wchar_t>();
System::Console::WriteLine("size() = {0}", c2.size());
c2.insert(c1.begin(), c1.end());
for each (wchar_t elem in c2)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// construct with an iterator range
Myset c3(c1.begin(), c1.end());
for each (wchar_t elem in c3)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// construct with an iterator range and an ordering rule
Myset c4(c1.begin(), c1.end(),
cliext::greater_equal<wchar_t>());
for each (wchar_t elem in c4)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// construct with an enumeration
Myset 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 with an enumeration and an ordering rule
Myset c6( // NOTE: cast is not needed
(System::Collections::Generic::IEnumerable<wchar_t>^)%c3,
cliext::greater_equal<wchar_t>());
for each (wchar_t elem in c6)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// construct from a generic container
Myset c7(c4);
for each (wchar_t elem in c7)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
// construct by copying another container
Myset c8(%c3);
for each (wchar_t elem in c8)
System::Console::Write("{0} ", elem);
System::Console::WriteLine();
return (0);
}
size() = 0
a b c
size() = 0
c b a
a b c
c b a
a b c
c b a
c b a
a b c
set::size
Conta o número de elementos.
Sintaxe
size_type size();
Comentários
A função membro retorna o comprimento da sequência controlada. Use para determinar o número de elementos que estão na sequência controlada no momento. Se tudo o que importa é se a sequência tem tamanho diferente de zero, consulte empty().
Exemplo
// cliext_set_size.cpp
// compile with: /clr
#include <cliext/set>
typedef cliext::set<wchar_t> Myset;
int main()
{
Myset c1;
c1.insert(L'a');
c1.insert(L'b');
c1.insert(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.insert(L'a');
c1.insert(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
set::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_set_size_type.cpp
// compile with: /clr
#include <cliext/set>
typedef cliext::set<wchar_t> Myset;
int main()
{
Myset c1;
c1.insert(L'a');
c1.insert(L'b');
c1.insert(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
Myset::size_type diff = 0;
for (Myset::iterator it = c1.begin(); it != c1.end(); ++it)
++diff;
System::Console::WriteLine("end()-begin() = {0}", diff);
return (0);
}
a b c
end()-begin() = 3
set::swap
Alterna o conteúdo de dois contêineres.
Sintaxe
void swap(set<Key>% right);
Parâmetros
right
Contêiner com o qual trocar conteúdos.
Comentários
A função membro troca as sequências controladas entre this e right. É feito em um tempo constante e não gera exceções. Use como uma maneira rápida de trocar o conteúdo entre dois contêineres.
Exemplo
// cliext_set_swap.cpp
// compile with: /clr
#include <cliext/set>
typedef cliext::set<wchar_t> Myset;
int main()
{
Myset c1;
c1.insert(L'a');
c1.insert(L'b');
c1.insert(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
Myset c2;
c2.insert(L'd');
c2.insert(L'e');
c2.insert(L'f');
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
d e f
d e f
a b c
set::to_array
Copia a sequência controlada para uma nova matriz.
Sintaxe
cli::array<value_type>^ to_array();
Comentários
A função membro retorna uma matriz que contém a sequência controlada. Use para obter uma cópia da sequência controlada em formato de matriz.
Exemplo
// cliext_set_to_array.cpp
// compile with: /clr
#include <cliext/set>
typedef cliext::set<wchar_t> Myset;
int main()
{
Myset c1;
c1.insert(L'a');
c1.insert(L'b');
c1.insert(L'c');
// copy the container and modify it
cli::array<wchar_t>^ a1 = c1.to_array();
c1.insert(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
set::upper_bound
Localiza fim do intervalo que corresponde a uma chave especificada.
Sintaxe
iterator upper_bound(key_type key);
Parâmetros
key
O valor chave a ser pesquisado.
Comentários
A função membro determina o último elemento X na sequência controlada que tem ordenação equivalente a key. Se esse elemento não existir, ou se X for o último elemento na sequência controlada, ele retornará end(); caso contrário, ele retornará um iterador que designa o primeiro elemento além de X. Use para localizar o fim de uma sequência de elementos que estão na sequência controlada no momento e que correspondem a uma chave especificada.
Exemplo
// cliext_set_upper_bound.cpp
// compile with: /clr
#include <cliext/set>
typedef cliext::set<wchar_t> Myset;
int main()
{
Myset c1;
c1.insert(L'a');
c1.insert(L'b');
c1.insert(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("upper_bound(L'x')==end() = {0}",
c1.upper_bound(L'x') == c1.end());
System::Console::WriteLine("*upper_bound(L'a') = {0}",
*c1.upper_bound(L'a'));
System::Console::WriteLine("*upper_bound(L'b') = {0}",
*c1.upper_bound(L'b'));
return (0);
}
a b c
upper_bound(L'x')==end() = True
*upper_bound(L'a') = b
*upper_bound(L'b') = c
set::value_comp
Copia o delegado de ordenação para dois valores de elemento.
Sintaxe
value_compare^ value_comp();
Comentários
A função membro retorna o delegado de ordenação usado para ordenar a sequência controlada. Use-a para comparar dois valores de elemento.
Exemplo
// cliext_set_value_comp.cpp
// compile with: /clr
#include <cliext/set>
typedef cliext::set<wchar_t> Myset;
int main()
{
Myset c1;
Myset::value_compare^ kcomp = c1.value_comp();
System::Console::WriteLine("compare(L'a', L'a') = {0}",
kcomp(L'a', L'a'));
System::Console::WriteLine("compare(L'a', L'b') = {0}",
kcomp(L'a', L'b'));
System::Console::WriteLine("compare(L'b', L'a') = {0}",
kcomp(L'b', L'a'));
System::Console::WriteLine();
return (0);
}
compare(L'a', L'a') = False
compare(L'a', L'b') = True
compare(L'b', L'a') = False
set::value_compare
O delegado de ordenação para dois valores de elemento.
Sintaxe
Microsoft::VisualC::StlClr::BinaryDelegate<generic_value, generic_value, bool>
value_compare;
Comentários
O tipo é um sinônimo do delegado que determina a ordenação dos argumentos de valor dessa sequência.
Exemplo
// cliext_set_value_compare.cpp
// compile with: /clr
#include <cliext/set>
typedef cliext::set<wchar_t> Myset;
int main()
{
Myset c1;
Myset::value_compare^ kcomp = c1.value_comp();
System::Console::WriteLine("compare(L'a', L'a') = {0}",
kcomp(L'a', L'a'));
System::Console::WriteLine("compare(L'a', L'b') = {0}",
kcomp(L'a', L'b'));
System::Console::WriteLine("compare(L'b', L'a') = {0}",
kcomp(L'b', L'a'));
System::Console::WriteLine();
return (0);
}
compare(L'a', L'a') = False
compare(L'a', L'b') = True
compare(L'b', L'a') = False
set::value_type
O tipo de um elemento.
Sintaxe
typedef generic_value value_type;
Comentários
O tipo é um sinônimo de generic_value.
Exemplo
// cliext_set_value_type.cpp
// compile with: /clr
#include <cliext/set>
typedef cliext::set<wchar_t> Myset;
int main()
{
Myset c1;
c1.insert(L'a');
c1.insert(L'b');
c1.insert(L'c');
// display contents " a b c" using value_type
for (Myset::iterator it = c1.begin(); it != c1.end(); ++it)
{ // store element in value_type object
Myset::value_type val = *it;
System::Console::Write("{0} ", val);
}
System::Console::WriteLine();
return (0);
}
a b c
operator!= (set)
Listar comparação de não igual.
Sintaxe
template<typename Key>
bool operator!=(set<Key>% left,
set<Key>% right);
Parâmetros
left
Contêiner esquerdo a comparar.
right
Contêiner direito a comparar.
Comentários
A função do operador retorna !(left == right). Você o usa para testar se left não está ordenado da mesma forma que right quando os dois conjuntos são comparados elemento por elemento.
Exemplo
// cliext_set_operator_ne.cpp
// compile with: /clr
#include <cliext/set>
typedef cliext::set<wchar_t> Myset;
int main()
{
Myset c1;
c1.insert(L'a');
c1.insert(L'b');
c1.insert(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
Myset c2;
c2.insert(L'a');
c2.insert(L'b');
c2.insert(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< (set)
Listar comparação de menor que.
Sintaxe
template<typename Key>
bool operator<(set<Key>% left,
set<Key>% right);
Parâmetros
left
Contêiner esquerdo a comparar.
right
Contêiner direito a comparar.
Comentários
A função do operador retorna true se, para a posição i mais baixa para a qual !(right[i] < left[i]) também é true que left[i] < right[i]. Caso contrário, ele retornará left->size() < right->size(). Você o usa para testar se left é ordenado antes quando right os dois conjuntos são comparados elemento por elemento.
Exemplo
// cliext_set_operator_lt.cpp
// compile with: /clr
#include <cliext/set>
typedef cliext::set<wchar_t> Myset;
int main()
{
Myset c1;
c1.insert(L'a');
c1.insert(L'b');
c1.insert(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
Myset c2;
c2.insert(L'a');
c2.insert(L'b');
c2.insert(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<= (set)
Listar comparação de menor ou igual a.
Sintaxe
template<typename Key>
bool operator<=(set<Key>% left,
set<Key>% right);
Parâmetros
left
Contêiner esquerdo a comparar.
right
Contêiner direito a comparar.
Comentários
A função do operador retorna !(right < left). Você o usa para testar se left não está ordenado depois right de quando os dois conjuntos são comparados elemento por elemento.
Exemplo
// cliext_set_operator_le.cpp
// compile with: /clr
#include <cliext/set>
typedef cliext::set<wchar_t> Myset;
int main()
{
Myset c1;
c1.insert(L'a');
c1.insert(L'b');
c1.insert(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
Myset c2;
c2.insert(L'a');
c2.insert(L'b');
c2.insert(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== (set)
Listar igual à comparação.
Sintaxe
template<typename Key>
bool operator==(set<Key>% left,
set<Key>% right);
Parâmetros
left
Contêiner esquerdo a comparar.
right
Contêiner direito a comparar.
Comentários
A função do operador retorna true somente se as sequências controladas por left e right tiverem o mesmo comprimento e, para cada posição i, left[i] == right[i]. Você o usa para testar se left é ordenado da mesma forma que right quando os dois conjuntos são comparados elemento por elemento.
Exemplo
// cliext_set_operator_eq.cpp
// compile with: /clr
#include <cliext/set>
typedef cliext::set<wchar_t> Myset;
int main()
{
Myset c1;
c1.insert(L'a');
c1.insert(L'b');
c1.insert(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
Myset c2;
c2.insert(L'a');
c2.insert(L'b');
c2.insert(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> (set)
Listar comparação maior que.
Sintaxe
template<typename Key>
bool operator>(set<Key>% left,
set<Key>% right);
Parâmetros
left
Contêiner esquerdo a comparar.
right
Contêiner direito a comparar.
Comentários
A função do operador retorna right < left. Você o usa para testar se left é ordenado depois de right quando os dois conjuntos são comparados elemento por elemento.
Exemplo
// cliext_set_operator_gt.cpp
// compile with: /clr
#include <cliext/set>
typedef cliext::set<wchar_t> Myset;
int main()
{
Myset c1;
c1.insert(L'a');
c1.insert(L'b');
c1.insert(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
Myset c2;
c2.insert(L'a');
c2.insert(L'b');
c2.insert(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>= (set)
Listar comparação de maior ou igual a.
Sintaxe
template<typename Key>
bool operator>=(set<Key>% left,
set<Key>% right);
Parâmetros
left
Contêiner esquerdo a comparar.
right
Contêiner direito a comparar.
Comentários
A função do operador retorna !(left < right). Você o usa para testar se left não está ordenado antes right quando os dois conjuntos são comparados elemento por elemento.
Exemplo
// cliext_set_operator_ge.cpp
// compile with: /clr
#include <cliext/set>
typedef cliext::set<wchar_t> Myset;
int main()
{
Myset c1;
c1.insert(L'a');
c1.insert(L'b');
c1.insert(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
Myset c2;
c2.insert(L'a');
c2.insert(L'b');
c2.insert(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