익스트랙트(Extract)


익스트랙트(Extract)

C++17 이전에는 map이나 set의 경우 키값을 변경하려면 해당 요소를 삭제 후 다시 만들어서 삽입하는 방식으로 써왔는데 이 방식은 메모리를 재할당하는 방식으로 성능 저하가 일어날 수 있다. C++ 17부터 사용이 가능한 extract는 컨테이너에서 해당 요소를 가지고 있는 노드의 연결을 해제하고 반환해준다. 연결을 해제하고 반환하기에 다시 사용할려고 하는 경우 연결을 해주어야 하며 메모리를 그대로 쓰기에 재할당이 일어나지 않아 성능 저하가 일어나지 않는다. node_type extract( const_iterator position ); node_type extract( const Key& k ); 이터레이터 혹은 키값을 인자로 받는다. map, set의 경우 키값 변경이 불가한데 extract를 통해 변경이 가능하다. map에서 키 값을 서로 바꿔주는 예시를 보자. #include <iostream> #include <map> int main() { std::map<int, ...


#C #CPP #Extract #map #set #STL #변경 #익스트랙트 #키값

원문링크 : 익스트랙트(Extract)