본문 바로가기
Language/C++

[c++/인프런] 3) 10주완성 알고리즘 c++

by 담백로봇 2023. 4. 30.

출처 인프런 - 10주 완성 c++

memcpy()와 copy()

깊은 복사를 할 때 memcpy()와 copy()를 쓴다.!!( 깊은 복사(deep copy) 새로운 메모리 공간을 확보해 완전히 복사하는 것으로 복사한 배열이 수정되어도 원본에 영향 x! , 반면 얖은복사(shallow copy)는 포인터로 메모리 주소값을 복사하게 되므로 수정하면 원복이 수정됨)

 

memcpy() : array 끼리 복사할 때

copy() : Array , vector 복사할 때 (이제 복사한다 for 루프 돌리지 말고..... copy()를 사용하자!)


memcpy 구조 (목적지, 근원지, 사이즈)

v 어레이는 ret어레이에 영향을 받고 선언을 ret [2]로 했을 때는 돌아가긴 함. 앞에서부터 채워짐


copy() 구조 : (iter 시작, iter 끝, result) => result에 복사가 되는 것 

매우 매우 유용하다!! 아무런 영향을 끼 지지 못한다.

 

이때 array에 사용한다면 구조는 copy(v, v+n, ret) where n은 어레이 크기 설정으로 벡터구조와 비슷하다.(벡터는 iterator를 제공해 주는 std container가 있어서 편하다)


Sort() 정렬!

O(nlogn)의 시간정렬도를 가짐. 많이 쓰긴 했는데 짚고 넘어가야 할 것 들을 다시 보고 가잣

 

구조: sort(first, last, *커스텀 비교함수) :이때 커스터 비교함수를 사용하지 않으면 자동 오름차순정렬

 

포함범위는: 

[first, last)로 되며 예로 크기가 5인 a 배열 전체를 sort 한다고 하면 sort(a [0], a[0] +5)로 해줘야 a [0]+4까지 솔트가 됨

 

내림차순 포맷:

sort(a.begin(), a.end(), greater());

 

또한 pair를 정렬할 수 있는데 아래 예제는 cmp를 사용함으로써 sort를 사용할지 안 할지 커스텀으로 제작할 수 있는 예. 근데 아래 예제는 sort를 사용하지 않아도 답이 똑같으니 일단 예제로 보자~

 

자료를 보면 볼수록 큰 돌님 내공이 어마어마하구나..

댓글