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

C++ set emplace_hint() 사용 방법 및 예제

C++ STL Set(집합)

C ++ set emplace_hint()함수는 힌트를 사용하여 요소 위치를 지정하여 새로운 요소를 컨테이너에 삽입하여 set 컨테이너를 확장합니다. 요소는 직접 생성됩니다(복사도 이동도 없습니다).

이 함수의 매개변수 args에 전달된 값을 사용하여 요소의 생성자를 호출합니다.

키가 존재하지 않는 경우에만 삽입합니다.

문법

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

매개변수

args:집합에 삽입할 요소를 생성하기 위해 전달하는 매개변수.

position:새로 삽입할 요소 위치를 표시합니다.

리턴 값

이터레이터를 새로 삽입된 요소로 반환합니다. 요소가 이미 존재하면 삽입 실패하고 이터레이터를 기존 요소로 반환합니다.

복잡

위치가 지정되지 않으면 컨테이너 크기의 로그로摊销됩니다.

위치가 주어지면 복잡도는 상수로摊销됩니다.

이터레이터 유효성

변경이 없습니다.

데이터 접촉

컨테이너가 변경되었습니다.

출구 요소에 동시 접근은 안전하지만 컨테이너에서의 반복 범위는 안전하지 않습니다.

예외 안전성

예외가 발생하면 컨테이너에 변경이 없습니다.

实例1

요소를 집합에 삽입하는 간단한 예제를 보겠습니다:

#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 << "집합에는 다음 요소가 포함됩니다" << endl;
   for (auto it = m.begin(); it != m.end(); ++it){
      cout << *it << endl;
   }   
   return 0;
}

출력:

집합에는 다음 요소가 포함됩니다
10
20
30
40 
50
60

위 예제에서는 요소가 주어진 위치에 주어진 값을 집합 m에 삽입됩니다.

实例2

아래 예제를 보겠습니다:

#include <set>  
#include <string>  
#include <iostream>  
  
using namespace std;  
  
template<typename M> void print(const M& m) {  
    cout << m.size() << " elements: " << endl;  
  
    for (const auto& p : m) {  
        cout << p << " " ;  
    }  
  
    cout << endl;  
}  
  
int main()  
{  
    set<string> m;1;  
  
    //데이터를 놓습니다 
    m1.emplace("Ram");  
    m1.emplace("Rakesh");  
    m1.emplace("Sunil");  
  
    cout << "设置起始数据: ";  
    print(m1);  
    cout << endl;  
  
    //emplace_hint 
    m1.emplace_hint(m1.end(), "Deep");  
  
    cout << "set modified, now contains ";  
    print(m1);  
    cout << endl;  
}

출력:

设置起始数据: 3 元素: 
Rakesh  Ram  Sunil  
设置已修改,现在包含 4 元素: 
Deep  Rakesh  Ram  Sunil

实例3

让我们看一个简单的示例,将元素插入给定位置的集合中:

#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 contains:";
  for (auto& x: myset){
    cout << " [" << x << "]";
    cout << '\n';
   }   
  return 0;
}

출력:

myset contains: [a] [b] [c]

实例4

让我们看一个插入元素的简单示例:

#include <iostream>
#include <set>
#include <string>
using namespace std;
int main() {
  typedef set<string> city;  
   string name;
   city fmly;
   int n;
   cout << "输入家庭成员人数 :\
   cin >> n;
   cout << "输入每个成员的姓名: \n";
   for(int i = 0; i < n;++)
   {
       cin >> name;      // Get key
       fmly.emplace_hint(fmly.begin(), name);
       
   }
   
      cout << "\n가족 구성원 수는:" << fmly.size();
      cout << "\n가족 구성원 정보: \n";
      cout << "\n이름 \n ________________________\n";
      city::iterator p;
      for(p = fmly.begin(); p!=fmly.end(); p++)
      {
          cout<<(*p) <<" \n ";
      }
    
   return 0;
}

출력:

가족 구성원 수를 입력하십시오 : 4
각 구성원의 이름을 입력하십시오: 
Deep
Sonu
Ajeet
Bob
가족 구성원 총 수:4
가족 구성원 정보: 
이름 
 ________________________
 Ajeet 
 Bob 
 Deep 
 Sonu

위의 예제에서는 사용자의 선택에 따라 요소를 집합의 앞쪽에 삽입합니다.

C++ STL Set(집합)