.second의 사용

Subin·2024년 11월 7일

Algorithm

목록 보기
48/69

.first와 .second의 사용을 잘못하고 있었다.
그래서 정리를 해두고자 한다.


.second는 여러 C++ 표준 라이브러리의 클래스에서 반환 타입으로 std::pair 객체를 사용하는 메서드에 쓰인다. 대표적으로 아래와 같은 메서드들이 .second를 반환값으로 사용할 수 있다:

1. std::set::insert

  • 반환 타입: std::pair<std::set<T>::iterator, bool>
  • 설명: set.insert(value) 메서드는 value가 성공적으로 삽입되면 true, 중복으로 인해 삽입되지 않았다면 false를 반환한다.
  • .first: 삽입된 위치의 반복자
  • .second: bool 값, 삽입 성공 여부

2. std::map::insert

  • 반환 타입: std::pair<std::map<Key, T>::iterator, bool>
  • 설명: map.insert({key, value})key가 없으면 value를 삽입하고, 있으면 아무것도 하지 않는다.
  • .first: 새로 삽입된 (또는 이미 존재하는) 요소의 반복자
  • .second: bool 값, 삽입 성공 여부

3. std::unordered_map::insert

  • 반환 타입: std::pair<std::unordered_map<Key, T>::iterator, bool>
  • 설명: unordered_map.insert({key, value})map::insert와 유사하게 동작하며, key가 이미 존재하면 삽입하지 않는다.
  • .first: 새로 삽입된 (또는 이미 존재하는) 요소의 반복자
  • .second: bool 값, 삽입 성공 여부

4. std::unordered_set::insert

  • 반환 타입: std::pair<std::unordered_set<T>::iterator, bool>
  • 설명: unordered_set.insert(value) 메서드는 set::insert와 유사하게 value를 삽입하고 중복이면 false를 반환한다.
  • .first: 삽입된 위치의 반복자
  • .second: bool 값, 삽입 성공 여부

5. std::map::emplace / std::unordered_map::emplace

  • 반환 타입: std::pair<std::map<Key, T>::iterator, bool> / std::pair<std::unordered_map<Key, T>::iterator, bool>
  • 설명: map.emplace(key, value)는 중복 키가 있으면 삽입하지 않고, 없으면 {key, value}를 삽입한다.
  • .first: 삽입된 위치의 반복자
  • .second: bool 값, 삽입 성공 여부

6. std::set::emplace / std::unordered_set::emplace

  • 반환 타입: std::pair<std::set<T>::iterator, bool> / std::pair<std::unordered_set<T>::iterator, bool>
  • 설명: set.emplace(value)value가 존재하면 삽입하지 않고, 없으면 삽입한다.
  • .first: 삽입된 위치의 반복자
  • .second: bool 값, 삽입 성공 여부

7. std::map::equal_range / std::unordered_map::equal_range

  • 반환 타입: std::pair<iterator, iterator>
  • 설명: equal_range(key)key에 해당하는 요소의 범위를 반환한다.
  • .first: 범위의 시작 반복자
  • .second: 범위의 끝 반복자

.secondpair의 두 번째 값을 참조하여 주로 삽입의 성공 여부를 확인하거나, 연관 컨테이너의 특정 키를 가진 범위를 반환받는 데 유용하게 사용된다.

profile
성장하며 꿈꾸는 삶을 살아가고 있는 대학생입니다😊

0개의 댓글