generate
컨테이너의 특정 구간을 특정 값으로 채우고 싶을 때가 있다. 이 값이 동일한 것이라면 컨테이너의 assign() 멤버를 사용하면 되지만 동일한 값이 아니라면 assign()을 사용할 수 없다.
이때 상용하는 알고리즘이 generate이다. generate 알고리즘에 값을 채울 컨테이너의 시작과 끝, 값을 생성할 함수를 파라미터로 넘긴다.
<generate를 사용하여 유저의 기초 데이터 설정 예제 코드>
copy
copy 알고리즘은 컨테이너에 저장한 것과 같은 자료 형을 저장하는 다른 컨테이너에 복사하고 싶을 때 사용한다.
컨테이너 A의 데이터를 컨테이너 B에 copy하는 경우 컨테이너 B에 데이터를 추가하는 것이 아니고 덧쓰는 것이므로 A에서 10개를 복사하는 경우 B에는 10개만큼의 공간이 없다면 버그가 발생한다. 또 A와 B 컨테이너는 같은 컨테이너일 필요는 없지만 당연히 컨테이너에 저장하는 자료 형은 같아야 한다.
<copy를 사용하는 예제코드>
remove
remove 알고리즘은 컨테이너에 있는 특정 값들을 삭제하고 싶은 때 사용한다. 주의해야 될 점은 삭제 후 크기가 변하지 않는다는 것이다. 삭제가 성공하면 삭제 대상이 아닌 데이터들을 앞으로 옮겨 놓고 마지막 위치의(컨테이너의 end()가 아닌 삭제 후 빈 공간에 다른 데이터를 쓰기 시작한 위치) 반복자를 반환한다. 리턴 값이 가리키는 부분부터 끝(end()) 사이의 데이터 순서는 정의되어 있지 않으며 진짜 삭제를 하기 위해서는 erase()를 사용해야 한다.
<remove를 사용하는 예제 코드>
replace
컨테이너의 특정 값을 다른 값으로 바꾸고 싶을 때는 replace 알고리즘을 사용한다.
<replace 사용하는 예제 코드>
출처 : Thinking About C++ STL 프로그래밍 (최홍배 지음)
'C++ > STL' 카테고리의 다른 글
10. 범용 수치 알고리즘(accumulate, inner_product) (0) | 2017.10.11 |
---|---|
9. 정렬 관련 알고리즘(sort, binary_search, merge) (0) | 2017.10.10 |
7. 변경 불가 시퀀스 알고리즘(find, find_if, for_each) (0) | 2017.09.28 |
6. 셋(set) (0) | 2017.09.27 |
5. 맵(map) (0) | 2017.09.26 |