English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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.
template<class... Args> iterator emplace_hint(const_iterator position, Args&&... args); //C++ 11 depois
args: Parâmetros passados para construir o elemento a ser inserido no conjunto.
position: Indica a posição de inserção do novo elemento.
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.
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.
Nenhuma mudança.
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.
Se for lançada uma exceção, não haverá nenhuma alteração no contêiner.
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.
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
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]
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.