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 프로그래밍 (최홍배 지음)

 

 

+ Recent posts