삽입 이터레이터

back_insert_iterator, front_insert_iterator, insert_iterator 가 있다.

 삽입은 기존 데이터 위에 쓰지 않고 새 원소들을 추가하며, 자동 메모리 대입을 사용하여 새 정보에
꼭 맞는 공간을 확보합니다. 

삽입 이터레이터는 컨테이너형을 템플릿 매개변수로 사용하고, 생성자를 매개변수로 컨테이너 식별자를 사용합니다. 

#include<iterator>
// vector<int> arr 이 선언되어 있다고 가정.

1) back_insert_iterator
	
    back_insert_iterator<vector<int> >back_iter(arr);
  	// back_iter라는 이터레이터 생성
    
2) insert_iterator
	
    insert_iterator<vector<int> >insert_iter(arr,arr.begin());
    // 두 번째 매개변수는 삽입될 위치를 지정.
   
 

컨테이너형을 사용해야 하는 이유

	이터레이터가 적절한 컨테이너 메서드를 이용해야 하기 때문이다.
    back_iter가, 접근 권한이 있는 vector<int>::push_back() 메서드를
    사용하는 것을 허용한다.
 

 

copy와 삽입이터레이터

#include<iostream>
#include<iterator>
#include<vector>
#include<string>
#include<algorithm>

void output(const std::string & s) { std::cout<<s<<" ";

int main() {
	
    using namespace std;
    
    string s[2] = {"Dookie2","tistory"};
    vector<string> arr(4);
    
    copy(s, s+2, back_insert_iterator<vector<string> >(arr));
    for_each(arr.begin(), arr.end(), output);
    
    copy(s, s+2, insert_iterator<vector<string> >(arr, arr.begin());
    for_each(arr.begin(), arr.end(), output);
    
    return 0;
}

/* 
 위 코드를 보면 
 copy()는 한 컨테이너에서 다른 컨테이너로 정보를 복사하는 데 사용하는 것 외에도
 출력스트림 -> 컨테이너, 입력스트림 -> 컨테이너로 정보를 복사하는 데에도 사용할 수 있다.
 더 나아가, 정보를 컨테이너 안에 삽입하는데에도 사용한다.
 copy()는 출력 이터레이터를 사용하는 여러 STL함수들 중 하나에 불과하므로, 미리 정의되어 있는
 이러한 이터레이터들이 그 함수의 기능을 확장한다.
 */

제약 사항

p.1276 박스

'C++' 카테고리의 다른 글

STL ( copy(), ostream_iterator, istream_iterator)  (0) 2021.02.16

+ Recent posts