STL의 컨테이너를 사용해보았다면 forward_list라고 해서 딱히 어려운 부분은 없습니다. 다만 forward_list이 단 방향 리스트라는 것과 다른 컨테이너에서는 지원하는 기능이 일부 없다는 것을 잘 숙지해야 합니다.
필요한 헤더 파일
forward_list는 이름과 같은 ‘forward_list’라는 헤더 파일을 포함해야 합니다.
#include <forward_list>
[예제] forward_list를 사용하여 요소 추가, 순회, 삭제하기
#include "stdafx.h"
#include <iostream>
#include <forward_list>
using namespace std;
int main()
{
forward_list< int > flist;
cout << "flist에 추가한 요소들 출력" << endl;
// 추가하기
auto iter = flist.before_begin();
for( int i = 0; i < 5; ++i )
{
iter = flist.insert_after( iter, i );
}
// 순회
for( iter = flist.begin(); iter != flist.end(); ++iter )
{
cout << *iter << endl;
}
cout << endl;
cout << "flist의 요소들 중 일부를 삭제한 후 남은 요소들 출력" << endl;
// 순회 하면서 일부 요소 삭제
auto prev_iter = flist.before_begin();
iter = flist.begin();
while( iter != flist.end() )
{
if( 3 == *iter )
{
iter = flist.erase_after( prev_iter );
continue;
}
++prev_iter;
++iter;
}
// 순회
for( iter = flist.begin(); iter != flist.end(); ++iter )
{
cout << *iter << endl;
}
return 0;
}
< 결과 >
위 예제를 보면 아시겠지만 forward_list는 std::list에 비해 성능 면의 이점을 가지고 있지만 사용 측면에서는 조금 불편한 점이 좀 있습니다. 그러나 C와 비슷한 성능을 내고 싶은 경우에는 좋은 선택 기가 될 수도 있습니다.
참고
'C++0x' 카테고리의 다른 글
[미리 보는 C++11] 1. UTF-8, UTF-16(char_16t), UTF-32(char32_t) 문자형 (7) | 2011.08.22 |
---|---|
C++0x가 드디어 C++11이 되었습니다. (0) | 2011.08.15 |
[STL] 14. VC++ 10에 추가된 새로운 컨테이너 forward_list – 소개편 (1) | 2011.06.14 |
[STL] 13. <algorithm>에 추가된 새로운 함수들 minmax_element (0) | 2011.05.30 |
[STL] 12. <algorithm>에 추가된 새로운 함수들 iota (0) | 2011.05.19 |