std::unordered_map<Key,T,Hash,KeyEqual,Allocator>:: erase
From ko.cppreference.net
<
cpp
|
container
|
unordered map
|
iterator erase
(
iterator pos
)
;
|
(1) |
(C++11부터)
(C++26부터 constexpr) |
|
iterator erase
(
const_iterator pos
)
;
|
(2) |
(C++11부터)
(C++26부터 constexpr) |
|
iterator erase
(
const_iterator first, const_iterator last
)
;
|
(3) |
(C++11부터)
(C++26부터 constexpr) |
|
size_type erase
(
const
Key
&
key
)
;
|
(4) |
(C++11부터)
(C++26부터 constexpr) |
|
template
<
class
K
>
size_type erase ( K && x ) ; |
(5) |
(C++23부터)
(C++26부터 constexpr) |
컨테이너에서 지정된 요소들을 제거합니다. 남은 요소들의 순서는 유지됩니다. (이를 통해 컨테이너를 순회하면서 개별 요소를 삭제할 수 있습니다.)
1,2)
pos
위치의 요소를 제거합니다.
3)
[
first
,
last
)
범위에 있는 요소들을 제거합니다. 이 범위는
*
this
내에서 유효한 범위여야 합니다.
4)
키가
key
와 동등한 요소가 존재하는 경우 해당 요소를 제거합니다.
5)
값
x
와 비교하여 동등한 모든 키를 가진 요소들을 제거합니다.
이 오버로드는 다음 조건에서만 오버로드 해결에 참여합니다:
Hash
와
KeyEqual
가 모두
transparent
이고,
iterator
와
const_iterator
모두
K
에서 암시적으로 변환될 수 없는 경우입니다. 이는 해당
Hash
가
K
와
Key
타입 모두에 대해 호출 가능하고,
KeyEqual
가 transparent라는 가정 하에, 이 함수를
Key
의 인스턴스를 생성하지 않고 호출할 수 있게 합니다.
삭제된 요소에 대한 참조와 반복자는 무효화됩니다. 다른 반복자와 참조는 무효화되지 않습니다.
반복자 pos 는 역참조 가능해야 합니다. 따라서 end() 반복자(유효하지만 역참조 불가능한)는 pos 의 값으로 사용할 수 없습니다.
목차매개변수
반환값
1-3)
제거된 마지막 요소 다음의 반복자.
4)
제거된 요소 개수(0 또는 1).
5)
제거된 요소의 수.
예외
1-3)
아무 것도 던지지 않습니다.
4,5)
Hash
및
KeyEqual
객체에 의해 발생하는 모든 예외.
복잡도
주어진
c
인스턴스는
1,2)
평균적인 경우: 상수 시간, 최악의 경우:
c.
size
(
)
.
4)
평균적인 경우:
c.
count
(
key
)
, 최악의 경우:
c.
size
(
)
.
5)
평균적인 경우:
c.
count
(
x
)
, 최악의 경우:
c.
size
(
)
.
참고 사항
예제이 코드 실행 #include <unordered_map>
#include <iostream>
int main()
{
std::unordered_map<int, std::string> map =
{
{1, "one"}, {2, "two"}, {3, "three"},
{4, "four"}, {5, "five"}, {6, "six"}
};
// erase all odd keys from map
for (auto it = map.begin(); it != map.end();)
{
if (it->first % 2 != 0)
it = map.erase(it);
else
++it;
}
for (const auto& pair : map)
std::cout << pair.second << ' ';
std::cout << '\n';
}
가능한 출력: two four six
결함 보고서다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.
참고 항목
|