English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C++ Tutorial Básico

C++ Controle de fluxo (Controle de fluxo)

C++ Função (Função)

C++ Array & String (Array & String)

C++ Estrutura de dados (Estrutura de dados)

C++ Classe & objeto (Classe & objeto)

C++ Ponteiro (Ponteiro)

C++ Herança (Herança)

C++ Tutorial STL (Tutorial STL)

C++ Manual de referência

C++ Uso e exemplo de set emplace_hint()

C++ STL Set ( Conjunto )

C ++ set emplace_hint()A função é usada para estender o contêiner set inserindo um novo elemento usando uma dica como posição do elemento. O elemento é construído diretamente (não é copiado nem movido).

Chama o construtor do elemento através dos parâmetros args passados para a função.

A inserção é feita apenas quando a chave não existe.

Sintaxe

template<class... Args>
    iterator emplace_hint(const_iterator position, Args&&... args);  //C++ 11 depois

Parâmetros

args: Parâmetros passados para construir o elemento a ser inserido no conjunto.

position: Indica a posição de inserção do novo elemento.

Retorno

Ele retorna o iterador para o elemento recém-inserido. Se o elemento já existir, a inserção falhará e o iterador será retornado para o elemento existente.

Complexo

Se não for especificada uma posição, o logaritmo do tamanho do contêiner será logarítmico.

Se for fornecida uma posição, a complexidade será constante.

Validade do iterador

Nenhuma mudança.

Conflito de dados

O contêiner foi modificado.

Embora seja seguro acessar o elemento de saída ao mesmo tempo, não é seguro iterar sobre o escopo do contêiner.

Segurança de exceção

Se for lançada uma exceção, não haverá nenhuma alteração no contêiner.

Exemplo1

Vamos ver um exemplo simples de inserção de elementos no conjunto:

#include <iostream>
#include <set>
using namespace std;
int main(void) {
   set<int> m = {60, 20, 30, 40});
            
   m.emplace_hint(m.end(), 50);
   m.emplace_hint(m.begin(), 10);
   cout << "O conjunto contém os seguintes elementos" << endl;
   for (auto it = m.begin(); it != m.end(); ++it){
      cout << *it << endl;
   }   
   return 0;
}

Saída:

O conjunto contém os seguintes elementos
10
20
30
40 
50
60

No exemplo acima, ele apenas insere elementos no conjunto m na posição dada com o valor dado.

Exemplo2

Vamos ver um exemplo simples:

#include <set>  
#include <string>  
#include <iostream>  
  
using namespace std;  
  
template<typename M> void print(const M& m) {  
    cout << m.size() << " elementos: " << endl;  
  
    for (const auto& p : m) {  
        cout << p << " ";  
    }  
  
    cout << endl;  
}  
  
int main()  
{  
    set<string> m1;  
  
    //Coloque alguns dados de teste 
    m1.emplace("Ram");  
    m1.emplace("Rakesh");  
    m1.emplace("Sunil");  
  
    cout << "Dados iniciais do conjunto: ";  
    print(m1);  
    cout << endl;  
  
    //emplace_hint 
    m1.emplace_hint(m1.end(), "Deep");  
  
    cout << "conjunto modificado, agora contém ";  
    print(m1);  
    cout << endl;  
}

Saída:

Dados iniciais do conjunto: 3 Elementos: 
Rakesh Ram Sunil  
O conjunto foi modificado, agora contém 4 Elementos: 
Deep Rakesh Ram Sunil

Exemplo3

Vamos ver um exemplo simples de inserção de elementos em um conjunto dado:

#include <iostream>
#include <set>
using namespace std;
int main ()
{
  set<char> myset;
  auto it = myset.end();
  it = myset.emplace_hint(it, 'b');
  myset.emplace_hint(it, 'a');
  myset.emplace_hint(myset.end(), 'c');
  cout << "myset contém:";
  for (auto& x: myset) {
    cout << "\n[" << x << "]";
    cout << '\n';
   }   
  return 0;
}

Saída:

myset contém: [a] [b] [c]

Exemplo4

Vamos ver um exemplo simples de inserção de elementos:

#include <iostream>
#include <set>
#include <string>
using namespace std;
int main() {
  typedef set<string> city;  
   string name;
   city fmly;
   int n;
   cout << "\nInsira o número de membros da família: ";
   cin >> n;
   cout << "\nInsira o nome de cada membro:\n";
   for(int i = 0; i < n;++)
   {
       cin >> name;      // Obter chave
       fmly.emplace_hint(fmly.begin(), name);
       
   }
   
      cout << "\nO número total de membros da família é:" << fmly.size();
      cout << "\nInformações de membros da família:\n";
      cout << "\nNome\n\n________________________\n";
      city::iterator p;
      for(p = fmly.begin(); p!=fmly.end(); p++)
      {
          cout<<(*p) << " \n ";
      }
    
   return 0;
}

Saída:

Insira o número de membros da família: 4
Insira o nome de cada membro: 
Deep
Sonu
Ajeet
Bob
Número Total de Membros da Família:4
Informações de Família: 
Nome 
 ________________________
 Ajeet 
 Bob 
 Deep 
 Sonu

No exemplo acima, ele apenas insere elementos no início do conjunto com base na escolha do usuário.

C++ STL Set ( Conjunto )