2016. 12. 2. 11:28ㆍIT-개발/C및C++
// insert의 세 가지 방법
#include <iostream>
#include <list>
using namespace std;
void main()
{
list< int > list1;
list1.push_back(20);
list1.push_back(30);
cout << "삽입 테스트 1" << endl;
// 첫 번째 위치에 삽입한다.
list< int >::iterator iterInsertPos = list1.begin();
list1.insert( iterInsertPos, 100 );
// 100, 20, 30 순으로 출력된다.
list< int >::iterator iterEnd = list1.end();
for(list< int >::iterator iterPos = list1.begin();
iterPos != iterEnd;
++iterPos )
{
cout << "list 1 : " << *iterPos << endl;
}
cout << endl << "삽입 테스트 2" << endl;
// 두 번째 위치에 200을 2개 삽입한다.
iterInsertPos = list1.begin();
++iterInsertPos;
list1.insert( iterInsertPos, 2, 200 );
// 100, 200, 200, 20, 30 순으로출력된다.
iterEnd = list1.end();
for(list< int >::iterator iterPos = list1.begin();
iterPos != iterEnd;
++iterPos )
{
cout << "list 1 : " << *iterPos << endl;
}
cout << endl << "삽입 테스트 3" << endl;
list< int > list2;
list2.push_back( 1000 );
list2.push_back( 2000 );
list2.push_back( 3000 );
// 두 번째 위치에 list2의 모든 데이터를 삽입한다.
iterInsertPos = list1.begin();
list1.insert( ++iterInsertPos, list2.begin(), list2.end() );
// 100, 1000, 2000, 3000, 200, 200, 20, 30 순으로출력된다.
iterEnd = list1.end();
for(list< int >::iterator iterPos = list1.begin();
iterPos != iterEnd;
++iterPos )
{
cout << "list 1 : " << *iterPos << endl;
}
}
// erase의 두 가지 사용방법
#include <iostream>
#include <list>
void main()
{
list< int > list1;
list1.push_back(10);
list1.push_back(20);
list1.push_back(30);
list1.push_back(40);
list1.push_back(50);
cout << "erase 테스트 1" << endl;
// 첫 번째 데이터 삭제
list1.erase( list1.begin() );
// 20, 30, 40, 50 출력
list< int >::iterator iterEnd = list1.end();
for(list< int >::iterator iterPos = list1.begin();
iterPos != iterEnd;
++iterPos )
{
cout << "list 1 : " << *iterPos << endl;
}
cout << endl << "erase 테스트2" << endl;
// 두 번째 데이터에서 마지막까지 삭제한다.
list< int >::iterator iterPos = list1.begin();
++iterPos;
list1.erase( iterPos, list1.end() );
// 20 출력
iterEnd = list1.end();
for(list< int >::iterator iterPos = list1.begin();
iterPos != iterEnd;
++iterPos )
{
cout << "list 1 : " << *iterPos << endl;
}
}
// list 반복자의 랜덤 접근
vector는 다음과 같이 바로 접근 가능
iterPos = vector.begin() + 3;
list에서는
++iterPos;
로만 접근이 가능
// Remove
list에서 지정한 값과 일치하는 모든 데이터 삭제. erase와 다른 점은 erase는 반복자를 통해서 삭제하지만 remove는 값을 통해서 삭제
list1에 담겨 있는 요소 중 특정 값과 일치하는 것을 모두 삭제하고 싶을 때는 아래와 같이 한다.
list1.remove( 20 ); // 20을 삭제한다.
'IT-개발 > C및C++' 카테고리의 다른 글
문법 - C++ - static_cast, dynamic_cast, const_cast, reinterpret_cast (0) | 2016.12.02 |
---|---|
STL - list - Sample (3) (0) | 2016.12.02 |
STL - list - Sample (1) (0) | 2016.12.02 |
STL - iterator 사용하기 sample (0) | 2016.12.01 |
Design Patterns - sample - SingleTon (0) | 2016.12.01 |