다음을 통해 공유


back_insert_iterator 클래스

출력 반복기의 요구 사항을 충족하는 반복기 어댑터에 대해 설명합니다. 반복기 어댑터는 요소를 덮어쓰는 것이 아니라, 시퀀스 끝 부분에 요소를 삽입하므로 C++ 시퀀스 컨테이너의 반복기가 제공한 덮어쓰기 의미 체계와 다른 의미 체계를 제공합니다. back_insert_iterator 클래스는 컨테이너 형식에 대해 템플릿화됩니다.

구문

template <class Container>
class back_insert_iterator;

매개 변수

컨테이너
back_insert_iterator가 뒤에 요소를 삽입할 컨테이너의 형식입니다.

설명

컨테이너는 가능할 경우 시퀀스 끝에 분할된 시간으로 요소를 삽입하는 후면 삽입 시퀀스에 대한 요구 사항을 충족해야 합니다. deque 클래스, list 클래스vector 클래스에서 정의한 C++ 표준 라이브러리 시퀀스 컨테이너는 필요한 push_back 멤버 함수를 제공하며 이러한 요구 사항을 충족합니다. 이러한 세 개의 컨테이너와 문자열은 각각 s와 함께 back_insert_iterator사용하도록 조정될 수 있습니다. back_insert_iterator는 항상 컨테이너를 사용하여 초기화해야 합니다.

생성자

생성자 Description
back_insert_iterator 컨테이너의 마지막 요소 다음에 요소를 삽입하는 back_insert_iterator를 만듭니다.

Typedef

형식 이름 설명
container_type back_insert_iterator에 대한 컨테이너를 제공하는 형식입니다.
reference back_insert_iterator에 대한 참조를 제공하는 형식입니다.

연산자

연산자 설명
operator* 후면 삽입을 위해 출력 반복기 식 * i = x를 구현하는 데 사용되는 역참조 연산자입니다.
operator++ 값을 저장할 다음 위치에 back_insert_iterator를 증가시킵니다.
operator= 후면 삽입을 위해 출력 반복기 식 * i = x를 구현하는 데 사용되는 할당 연산자입니다.

요구 사항

헤더: <반복기>

네임스페이스: std

back_insert_iterator::back_insert_iterator

컨테이너의 마지막 요소 다음에 요소를 삽입하는 back_insert_iterator를 만듭니다.

explicit back_insert_iterator(Container& _Cont);

매개 변수

_계속
back_insert_iterator가 요소를 삽입할 컨테이너입니다.

Return Value

매개 변수 컨테이너에 대한 back_insert_iterator입니다.

예시

// back_insert_iterator_back_insert_iterator.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>

int main( )
{
   using namespace std;
   int i;

   vector<int> vec;
   for ( i = 1 ; i < 4 ; ++i )
   {
      vec.push_back ( i );
   }

   vector <int>::iterator vIter;
   cout << "The initial vector vec is: ( ";
   for ( vIter = vec.begin ( ) ; vIter != vec.end ( ); vIter++)
      cout << *vIter << " ";
   cout << ")." << endl;

   // Insertions with member function
   back_inserter ( vec ) = 40;
   back_inserter ( vec ) = 50;

   // Alternatively, insertions can be done with template function
   back_insert_iterator<vector<int> > backiter ( vec );
*backiter = 600;
   backiter++;
*backiter = 700;

   cout << "After the insertions, the vector vec is: ( ";
   for ( vIter = vec.begin ( ) ; vIter != vec.end ( ); vIter++)
      cout << *vIter << " ";
   cout << ")." << endl;
}
The initial vector vec is: ( 1 2 3 ).
After the insertions, the vector vec is: ( 1 2 3 40 50 600 700 ).

back_insert_iterator::container_type

back_insert_iterator에 대한 컨테이너를 제공하는 형식입니다.

typedef Container
container_type;

설명

이 형식은 템플릿 매개 변수 Container의 동의어입니다.

예시

// back_insert_iterator_container_type.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>

int main( )
{
   using namespace std;
   int i;

   vector<int> vec;
   for (i = 1 ; i < 4 ; ++i )
   {
      vec.push_back (  i );
   }

   vector <int>::iterator vIter;
   cout << "The original vector vec is: ( ";
   for ( vIter = vec.begin ( ) ; vIter != vec.end ( ); vIter++)
      cout << *vIter << " ";
   cout << ")." << endl;

   back_insert_iterator<vector<int> >::container_type vec1 = vec;
   back_inserter ( vec1 ) = 40;

   cout << "After the insertion, the vector is: ( ";
   for ( vIter = vec1.begin ( ) ; vIter != vec1.end ( ); vIter++)
      cout << *vIter << " ";
   cout << ")." << endl;
}
The original vector vec is: ( 1 2 3 ).
After the insertion, the vector is: ( 1 2 3 40 ).

back_insert_iterator::operator*

출력 반복기 식을 구현하는 데 사용되는 역참조 연산자 * i = x.

back_insert_iterator<Container>& operator*();

Return Value

컨테이너의 뒤쪽에 삽입된 요소에 대한 참조입니다.

설명

출력 반복기 식 *Iter = 값을 구현하는 데 사용됩니다. Iter가 시퀀스의 요소 주소를 지정하는 반복기인 경우 *Iter = 은 해당 요소를 값으로 바꾸고 시퀀스의 총 요소 수를 변경하지 않습니다.

예시

// back_insert_iterator_back_insert.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>

int main( )
{
   using namespace std;
   int i;

   vector<int> vec;
   for (i = 1 ; i < 4 ; ++i )
   {
      vec.push_back ( i );
   }

   vector <int>::iterator vIter;
   cout << "The vector vec is: ( ";
   for ( vIter = vec.begin ( ) ; vIter != vec.end ( ); vIter++)
      cout << *vIter << " ";
   cout << ")." << endl;

   back_insert_iterator<vector<int> > backiter ( vec );
*backiter = 10;
   backiter++;      // Increment to the next element
*backiter = 20;
   backiter++;

   cout << "After the insertions, the vector vec becomes: ( ";
   for ( vIter = vec.begin ( ) ; vIter != vec.end ( ); vIter++)
      cout << *vIter << " ";
   cout << ")." << endl;
}
The vector vec is: ( 1 2 3 ).
After the insertions, the vector vec becomes: ( 1 2 3 10 20 ).

back_insert_iterator::operator++

값을 저장할 다음 위치에 back_insert_iterator를 증가시킵니다.

back_insert_iterator<Container>& operator++();
back_insert_iterator<Container> operator++(int);

Return Value

값을 저장할 수 있는 다음 위치의 주소를 지정하는 back_insert_iterator입니다.

설명

preincrementation과 postincrementation 연산자는 둘 다 동일한 결과를 반환합니다.

예시

// back_insert_iterator_op_incre.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>

int main( )
{
   using namespace std;
   int i;

   vector<int> vec;
   for (i = 1 ; i < 3 ; ++i )
   {
      vec.push_back ( 10 * i );
   }

   vector <int>::iterator vIter;
   cout << "The vector vec is: ( ";
   for ( vIter = vec.begin ( ) ; vIter != vec.end ( ); vIter++)
      cout << *vIter << " ";
   cout << ")." << endl;

   back_insert_iterator<vector<int> > backiter ( vec );
*backiter = 30;
   backiter++;      // Increment to the next element
*backiter = 40;
   backiter++;

   cout << "After the insertions, the vector vec becomes: ( ";
   for ( vIter = vec.begin ( ) ; vIter != vec.end ( ); vIter++)
      cout << *vIter << " ";
   cout << ")." << endl;
}
The vector vec is: ( 10 20 ).
After the insertions, the vector vec becomes: ( 10 20 30 40 ).

back_insert_iterator::operator=

컨테이너의 백 엔드에 값을 추가하거나 푸시합니다.

back_insert_iterator<Container>& operator=(typename Container::const_reference val);
back_insert_iterator<Container>& operator=(typename Container::value_type&& val);

매개 변수

val
컨테이너에 삽입할 값입니다.

Return Value

컨테이너의 뒤쪽에 삽입된 마지막 요소에 대한 참조입니다.

설명

첫 번째 멤버 연산자는 Container.push_back( val)을 계산한 다음

그런 다음 *this를 반환합니다. 두 번째 멤버 연산자는 다음을 계산합니다.

container->push_back((typename Container::value_type&&)val),

그런 다음 *this를 반환합니다.

예시

// back_insert_iterator_op_assign.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>

int main( )
{
   using namespace std;
   int i;

   vector<int> vec;
   for (i = 1 ; i < 4 ; ++i )
   {
      vec.push_back ( i );
   }

   vector <int>::iterator vIter;
   cout << "The vector vec is: ( ";
   for ( vIter = vec.begin ( ) ; vIter != vec.end ( ); vIter++)
      cout << *vIter << " ";
   cout << ")." << endl;

   back_insert_iterator<vector<int> > backiter ( vec );
*backiter = 10;
   backiter++;      // Increment to the next element
*backiter = 20;
   backiter++;

   cout << "After the insertions, the vector vec becomes: ( ";
   for ( vIter = vec.begin ( ) ; vIter != vec.end ( ); vIter++)
      cout << *vIter << " ";
   cout << ")." << endl;
}

back_insert_iterator::reference

back_insert_iterator에 대한 참조를 제공하는 형식입니다.

typedef typename Container::reference reference;

설명

이 형식은 연관 컨테이너에서 제어하는 시퀀스의 요소에 대한 참조를 제공합니다.

예시

// back_insert_iterator_reference.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>

int main( )
{
   using namespace std;
   int i;

   vector<int> vec;
   for (i = 1 ; i < 4 ; ++i )
   {
      vec.push_back ( i );
   }

   vector <int>::iterator vIter;
   cout << "The vector vec is: ( ";
   for ( vIter = vec.begin ( ) ; vIter != vec.end ( ); vIter++)
      cout << *vIter << " ";
   cout << ")." << endl;

   back_insert_iterator<vector<int> >::reference
        RefLast = *(vec.end ( ) - 1 );
   cout << "The last element in the vector vec is: "
        << RefLast << "." << endl;
}
The vector vec is: ( 1 2 3 ).
The last element in the vector vec is: 3.

참고 항목

<iterator>
C++ 표준 라이브러리의 스레드 보안
C++ 표준 라이브러리 참조