-
[C++] 모든 컨테이너를 배열처럼 접근? std::advance()프로그래밍 2014. 5. 24. 07:07반응형
std::advance(_InIt& _Where, _Diff _Off)는 off만큼 반복자를 이동시키는 일을 한다.
즉 std::vector<int> vec{1,2,3,4,5}; 일 때
auto it = vec.begin();
std::advance(it, 1);
cout<<"result: "<<*it<<endl;
결과
result: 2
auto it = vec.begin();
std::advance(it, 3);
cout<<"result: "<<*it<<endl;
결과
result: 4
배열일 경우엔 임의 접근(random access, [] 연산)을 사용하는 것과 다를 바가 없지만,
컨테이너가 list나 map 같은 것이라면 얘기가 달라진다.
std::list<int> container;
index = 2;
container[index]; // 불가능!
auto it = container.begin();
std::advence(it, index) // 가능!
std::advence는 컨테이너별로 적합한 처리를 하여
모든 컨테이너에 대해 배열의 임의 접근과 같은 효과를 낼 수 있도록 한다.
반응형'프로그래밍' 카테고리의 다른 글
[c++] inline 함수 사용의 경우 (0) 2014.07.02 zl/memory_stream 네이밍 (0) 2014.07.02 CPU에 따른, 프로그램에서의 효율적 스레드의 수 (2) 2014.05.23 C# 표준 네이밍 규칙 (2) 2014.05.02 boost singleton_pool의 사용 (0) 2014.04.20