삽입 이터레이터
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 |
---|