본문 바로가기

Linux

std:iterator 를 이용하는 간단한 예제

C++에서 반복자(iterator)는 컨테이너의 요소를 순회하고 접근하는 방법을 제공하는 객체입니다.
다양한 종류의 컨테이너와 함께 사용할 수 있으며, 각각의 반복자는 다른 종류의 작업을 지원합니다.
아래에 몇 가지 예제를 제공하겠습니다:

#include <iostream>
#include <vector>

int main() {
    std::vector<int> nums = {1, 2, 3, 4, 5};

    // 벡터의 반복자를 선언합니다.
    std::vector<int>::iterator it;

    // 벡터의 모든 요소를 순회합니다.
    for (it = nums.begin(); it != nums.end(); ++it) {
        std::cout << *it << " ";
    }

    return 0;
}


#include <iostream>
#include <map>

int main() {
    std::map<std::string, int> ages;
    ages["Alice"] = 20;
    ages["Bob"] = 22;
    ages["Charlie"] = 30;

    // 맵의 반복자를 선언합니다.
    std::map<std::string, int>::iterator it;

    // 맵의 모든 요소를 순회합니다.
    for (it = ages.begin(); it != ages.end(); ++it) {
        std::cout << it->first << ": " << it->second << std::endl;
    }

    return 0;
}

#include <iostream>
#include <vector>

int main() {
    std::vector<int> nums = {1, 2, 3, 4, 5};

    // 범위 기반 for 루프를 사용하여 벡터의 모든 요소를 순회합니다.
    for (int num : nums) {
        std::cout << num << " ";
    }

    return 0;
}

이러한 예제들은 반복자가 어떻게 사용되는지를 보여주며, 
실제 사용 시에는 데이터의 크기와 복잡성에 따라 코드를 조정해야 할 수 있습니다. 

 

참고사항

----------------------

std::map<std::string, int> ages; 

std::map<std::string, int>::iterator it = ages.begin(); 

위의 문장을 사용시 it와 *it의 차이점은 다음과 같습니다:

it는 std::map<std::string, int>의 반복자입니다. 
이는 컨테이너의 특정 요소를 가리키는 역할을 합니다.

 

*it는 반복자가 현재 가리키고 있는 요소를 반환합니다
std::map의 경우, 이는 키-값 쌍인 std::pair<const Key, T>를 반환합니다.
따라서 *it를 사용하면 현재 요소의 키에는 (*it).first 또는 it->first로, 
값에는 (*it).second 또는 it->second로 접근할 수 있습니다.