iterator 선언 및 초기화

// #1	
std::vector<int>::iterator pd;    // 이터레이터 선언
std::vector<int> scores;          // 벡터 선언
pd = scores.begin();              // 이터레이터 pd는 scores의 시작주소를 가리킨다
*pd = 22;                         // 이터레이터가 가리키고 있는 주소의 값을 22로 설정한다.
++pd;                             // 인덱스를 다음칸으로 이동한다

// #2
std::vector<int>::iterator pd = scores.begin()  // 선언과 동시에 초기화

// #3
auto pd = scores.begin()  // C++11 자동 형변환

 

 

for문 루프 및 Range 루프 

// #1 이터레이터를 활용한 출력 for문
for(pd = score.begin(); pd != scores.end(); pd++)
    cout << *pd << endl;

// #2 Range에 기초한 루프(C++11)
for (int& x : scores)
	std::cout << x << ' ';
for (auto& : scores)
    std::cout << x << ' ';
        
// #3 for_each 함수 사용 header <algorithm>
void Input(int& A)
{
	std::cin >> A;
}

void Output(int& A)
{
	std::cout << A << ' ';
}

int main(void)
{
	std::vector<int> scores(5);
	std::for_each(scores.begin(), scores.end(), Input);
	std::for_each(scores.begin(), scores.end(), Output);
}

 

 

copy, ostream_iterator, istream_iterator

#include <iterator>

int casts[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
vector<int> dice(10);

// 배열을 벡터로 복사하기
copy(casts, casts + 10, dice.begin());

// ostream 출력 이터레이터 
copy(dice.begin(), dice.end(), ostream_iterator<int, char>(cout, " "));
/*or*/
ostream_iterator<int, char> out_iter(cout, " ")  // 출력 이터레이터 생성
copy(dice.begin(), dice.end(), out_iter);

// 역방향 이터레이터 암시적 사용
copy(dice.rbegin(), dice.rend(), out_iter);  

// 역방향 이터레이터 명시적 사용
vector<int>::reverse_iterator ri;
for(ri = dice.rbegin(); ri != dice.rend(); ++ri)
    cout << *ri << ' ';

// istream 입력 이터레이터
copy(istream_iterator<int, char>(cin), istream_iterator<int, char>(), dice.begin());

// back_insert_iterator 이터레이터 == push_back
back_insert_iterator<vector<int> > back_iter(dice); // 원형
copy(words, words + 2, back_insert_iterator<vector<string> >(words));

// insert_iterator 이터레이터 == front_insert_iterator 
insert_iterator<vector<int> > insert_iter(dice, dice.begin());  // 원형
copy(words, words + 2, insert_iterator<vector<string> >(words, words.begin()));