본문 바로가기
C++/기초 및 알고리즘 함수

sort, end, push_back, emplace_back 차이

by tokkiC 2022. 6. 8.

sort : 배열을 정렬하는 함수. 3번째 인자에 커스텀 비교함수를 넣지 않으면 디폴트 값으로 오름차순 less을 갖는다

sort(처음 위치, 마지막 데이터의 바로 뒤, 커스텀 비교 함수)
// 처음, 마지막의 뒤 모두 인덱스 위치로 가리키고, 커스텀비교함수는 선택사항이다. 없어도 됨

예) 배열 a를 처음부터 5번째 숫자까지 오름차순으로 정렬하고자 할때, sort(a[0], a[5])  가 된다.
    마지막 데이터의 앞이 아닌 뒤이므로 [5] 가 된다. 내림차순을 사용할 경우 greater<int>() 를 3번째 인자에 넣으면 된다

end : 배열의 마지막 요소 다음을 가르키는 함수. 마지막 인덱스 다음 인덱스를 가리킨다고 보면 된다(데이터의 끝 부분)

push_back : 객체를 (객체가 아닌 날것의 값 lvalue 이면 객체를 만든후에) 배열의 맨 마지막 요소 뒤에 복사하고 배열에 추가한다
배열에 추가 후 남은 객체는 삭제한다

emplace_back : 객체를 미리 만들지 않고 값만 인자로 가져가서 백터내에서 객체를 만들어 맨 마지막 요소 뒤에 추가한다

push_back 은 객체를 만들어서 인자로 넣는 것이고, emplace_back 은 객체가 아닌 날것의 값을 받아 인자로 넣는 것이다
객체를 복사하고 삭제하는 push_back 보다 emplace_back이 처리속도가 더 빠르지만 크게 차이는 없다고 한다

댓글