Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++의 출력 반복자

<시간/>

여기서 우리는 C++의 출력 반복자가 무엇인지 볼 것입니다. 출력 반복자에는 일부 속성이 있습니다. 다음과 같습니다.

  • 출력 반복자는 컨테이너의 값을 수정하는 데 사용됩니다.
  • 이러한 종류의 반복자를 사용하여 컨테이너에서 데이터를 읽을 수 없습니다.
  • 단방향 및 쓰기 전용 반복기입니다.
  • 증가할 수 있지만 감소할 수는 없습니다.
  • 출력 반복기에는 두 가지 하위 부분이 있습니다. 삽입 반복자와 ostreamiterator입니다.

삽입 반복기

삽입 반복기는 컨테이너 내부에 일부 요소를 삽입하는 데 사용됩니다. 이 반복기 유형의 할당 연산자는 현재 위치에 새 요소를 삽입합니다. insertiterator의 구문은 다음과 같습니다.

template<class Container, class Iterator>
insert_iterator<container> inserter(Container &x,Iterator it);

이 반복자는 x와 it이라는 두 개의 매개변수를 사용합니다. x는 반복자가 작동할 컨테이너입니다. 두 번째 인수는 수정할 위치를 가리키는 반복자 개체입니다.

예시 코드

#include <iostream>
#include <iterator>
#include <vector>
#include <algorithm>
using namespace std;
int main () {
   vector<int> vec1,vec2;
   for (int i=1; i<=10; i++) { //insert elements into vectors
      vec1.push_back(i);
      vec2.push_back(i+3);
   }
   vector<int>::iterator it = vec1.begin(); //iterator works on vector1
   advance (it,5); //advance it to 5 position
   copy (vec2.begin(),vec2.end(),inserter(vec1,it));
   cout<<"Elements of vec1 are :";
   for ( it = vec1.begin(); it!= vec1.end(); ++it )
      cout << ' ' << *it;
      cout << endl;
   return 0;
}

출력

Elements of vec1 are : 1 2 3 4 5 4 5 6 7 8 9 10 11 12 13 6 7 8 9 10

ostream 반복자

ostream 반복자는 cout과 같은 출력 스트림에 쓰는 데 사용됩니다. ostreamiterator는 basic_ostream 개체를 사용하여 만들 수 있습니다. 할당 연산자가 이 유형의 반복기와 함께 사용되면 출력 스트림에 새 요소를 삽입합니다. 구문은 아래와 같습니다.

template<class T, class charT=char, class traits=char_traits<charT>>
class ostream_iterator;

ostream iterator 클래스의 멤버 함수는 아래와 같다.

ostream_iterator<T, charT, traits>& operator=(const T& value);
ostream_iterator<T, charT, traits>& operator*();
ostream_iterator<T, charT, traits>& operator++();
ostream_iterator<T, charT, traits>& operator++(int);

매개변수는 다음과 같습니다. T. 삽입될 요소의 유형, 차트, ostream이 처리할 수 있는 요소의 유형 및 특성입니다. 스트림에서 처리할 수 있는 특성입니다.

예시 코드

#include <iostream>
#include<iterator>
#include<vector>
#include<algorithm>
using namespace std;
main() {
   vector<int> vector;
   for(int i=1;i<=10;i++)
      vector.push_back(i*i); //make square and insert
      ostream_iterator<int> out(cout,",");
      copy(vector.begin(),vector.end(),out);
}

출력

1,4,9,16,25,36,49,64,81,100,

또 다른 예

예시 코드

#include <iostream>
#include<iterator>
#include<vector>
#include<algorithm>
using namespace std;
main() {
   ostream_iterator<int> os_out(cout,",");
   *os_out = 10;
   os_out++; //point to next
   *os_out = 20;
   os_out++;
   *os_out = 30;
}

출력

10,20,30,