////////////////////////////////////////////////////////////////////////
// vector ( iterator,push_back,begin,end )
////////////////////////////////////////////////////////////////////////
#if 0
#include <iostream>
#include <vector>
using namespace std;
void main()
{
vector<int> vector1;
vector<int> vector2(5); // vector2[5]
vector<int>::iterator it;
int array[5];
for ( int i=0 ; i<5 ; i++ )
{
array[i]=i;
vector1.push_back(array[i]);
}
cout << "vector크기" << vector1.size() << endl;
for ( it=vector1.begin() ; it!=vector1.end() ; it++ )
{
cout << *it << endl;
}
for ( i=0 ; i<vector1.size() ; i++ )
{
vector2[i]=vector1[i];
}
for ( it=vector2.begin() ; it!=vector2.end() ; it++ )
{
cout << *it << endl;
}
}
#endif
////////////////////////////////////////////////////////////////////////
// <list>
////////////////////////////////////////////////////////////////////////
#if 0
#include <iostream>
#include <list>
using namespace std;
void main()
{
list<int> List;
list<int>::iterator it;
List.push_back(10);
List.push_back(9);
List.push_back(8);
List.push_back(7);
for ( it = List.begin() ; it!=List.end() ; it++ )
{
cout << *it << endl;
}
cout << List.size() << endl;
List.push_front(11);
List.push_front(12);
List.push_front(13);
for ( it = List.begin() ; it!=List.end() ; it++ )
{
cout << *it << endl;
}
cout << List.size() << endl;
}
#endif
////////////////////////////////////////////////////////////////////////
// <set>
// 자동으로 정렬해준다..
////////////////////////////////////////////////////////////////////////
#if 0
#include <iostream>
#include <set>
#include <ctime> // time.h
using namespace std;
void main()
{
srand((unsigned)time(NULL));
int p[8]={5,3,2,4,1,9,8,7};
set<int> set1;
set<int>::iterator it;
for ( int i=0 ; i<8 ; i++ )
{
int temp=rand()%8;
set1.insert(p[temp]);
}
for ( it=set1.begin() ; it!=set1.end() ; it++ )
{
cout << *it << endl;
}
}
#endif
////////////////////////////////////////////////////////////////////////
// <map>
////////////////////////////////////////////////////////////////////////
#if 0
#include <iostream>
#include <map>
using namespace std;
void main()
{
map<int,char*> map1;
map<int,char*>::iterator it;
map1[3]="Lee";
map1[2]="hello";
map1[1]="hi";
for ( it=map1.begin() ; it!=map1.end() ; it++ )
{
cout << it->first << it->second << endl;
}
map1[1]="wow";
map1[3]="ho";
for ( it=map1.begin() ; it!=map1.end() ; it++ )
{
cout << it->first << it->second << endl;
}
map1.erase(3);
for ( it=map1.begin() ; it!=map1.end() ; it++ )
{
cout << it->first << it->second << endl;
}
}
#endif
////////////////////////////////////////////////////////////////////////
// vector 다양한 사용 예~
////////////////////////////////////////////////////////////////////////
#if 0
#include <iostream>
#include <vector>
using namespace std;
void main()
{
vector<int> vector1(5);
vector<int>::iterator it;
for ( int i=0 ; i<5 ; i++ )
{
vector1[i]=i;
}
cout << "vector1 출력!" << endl;
for ( it=vector1.begin() ; it!=vector1.end() ; it++ )
{
cout << *it << endl;
}
vector1.insert(&vector1[3],11);
cout << "vector1 3번째에 11추가 출력!" << endl;
for ( it=vector1.begin() ; it!=vector1.end() ; it++ )
{
cout << *it << endl;
}
vector1.erase(&vector1[4]);
cout << "vector1 4번째 지움" << endl;
for ( it=vector1.begin() ; it!=vector1.end() ; it++ )
{
cout << *it << endl;
}
vector<int>::reverse_iterator it2;
cout << "역뱡향 출력" << endl;
for ( it2=vector1.rbegin() ; it2!=vector1.rend() ; it2++ )
{
cout << *it2 << endl;
}
vector<char> charvector;
vector<char>::iterator charit;
for ( i=0 ; i<26 ; i++ )
{
charvector.push_back('A'+i);
}
cout << "문자출력!" << endl;
for ( charit=charvector.begin() ; charit!=charvector.end() ; charit++ )
{
cout << *charit ;
}
cout << endl;
char *p[]={"Hello","Hi","Ok"};
vector<char*> strvector;
vector<char*>::iterator strit;
for ( i=0 ; i<3 ; i++ )
{
strvector.push_back(p[i]);
}
cout << "포인터 char 출력!" << endl;
for ( strit=strvector.begin() ; strit!=strvector.end() ; strit++ )
{
cout << *strit << endl;
}
}
#endif
////////////////////////////////////////////////////////////////////////
// list를 이용한 링크드리스트 구현.
////////////////////////////////////////////////////////////////////////
#if 1
#include <iostream>
#include <list>
#include <algorithm> // find의 아빠!
using namespace std;
void main()
{
list<int> List;
list<int>::iterator it;
int num;
int input;
int del;
while(1)
{
cout << "[1]입력 [2]삭제 [3]출력" << endl;
cout << "입력:";
cin >> num;
switch (num)
{
case 1:
cout << "입력할 값:";
cin >> input;
List.push_back(input);
break;
case 2:
cout << "삭제할 값:";
cin >> del;
List.erase(find(List.begin(),List.end(),del));
// find 알고리즘... find(처음,끝,찾을값) 값을 리턴!!!해준다;
break;
case 3:
for ( it=List.begin() ; it!=List.end() ; it++ )
{
cout << *it << endl;
}
break;
}
}
}
#endif
////////////////////////////////////////////////////////////////////////////////////
// list와 struct
////////////////////////////////////////////////////////////////////////////////////
#if 0
#pragma once
#include <iostream>
#include <list>
using namespace std;
typedef struct teg_Number
{
char name[10];
int num;
}NUMBER;
NUMBER *pNum=NULL;
list < NUMBER* > list1;
list < NUMBER* >::iterator it;
void Input()
{
int sel;
while(1)
{
cout << "[1]입력 [5]나가기" << endl;
cout << "입력:";
cin >> sel;
if ( sel==5 ) { break; }
if ( sel==1 )
{
pNum = new NUMBER;
cout << "이름:";
cin >> pNum->name;
cout << "전화번호:";
cin >> pNum->num;
list1.push_back(pNum);
}
}
}
void Output()
{
for ( it=list1.begin() ; it!=list1.end() ; it++ )
{
cout << (*it)->name << endl; // (*it)-> <== 요부분!
cout << (*it)->num << endl;
}
}
void main()
{
Input();
Output();
delete pNum;
}
#endif
////////////////////////////////////////////////////////////////////////////////////
// copy, sort <algorithm>
////////////////////////////////////////////////////////////////////////////////////
#if 0
#pragma once
#include <iostream>
#include <list>
#include <vector>
#include <algorithm>
using namespace std;
void main()
{
vector<int> vector1;
// 벡터 초기화
istream_iterator<int> in( cin );
copy( in, istream_iterator<int>(), back_inserter( vector1 ) );
// 벡터출력
cout << " 정렬 전" << endl;
ostream_iterator<int> out( cout, " ");
copy( vector1.begin(), vector1.end(), out );
// 벡터 정렬
sort( vector1.begin(), vector1.end() );
cout << "\n정렬 후" << endl;
copy( vector1.begin(), vector1.end(), out );
vector<int>::iterator it;
for( it = vector1.begin(); it != vector1.end(); it++ )
{
cout << "\n" << *it;
}
}
#endif
////////////////////////////////////////////////////////////////////////////////////
// STL 활용 예.. 여러가지.. generate,random_shuffle
////////////////////////////////////////////////////////////////////////////////////
#if 0
#pragma once
#include <iostream>
#include <list>
#include <vector>
#include <algorithm>
#include <deque>
#include <ctime>
using namespace std;
int random()
{
return rand()%10;
}
void Print( int val )
{
cout << val << " ";
}
void main()
{
srand((unsigned)time(NULL));
vector <int> vector1(5);
deque <int> deque1;
deque <int>::iterator it;
cout << "벡터 초기화" << endl;
generate(vector1.begin(),vector1.end(),random);
// random 값으로 vector1(5)를 초기화 한다. random 함수 부름.
for_each(vector1.begin(),vector1.end(),Print);
// Print함수 불러서 vector1(5)를 출력. 파라미터 필요없음. () 필요없음.
cout << endl;
cout << "댁 복사" << endl;
copy(vector1.begin(),vector1.end(),back_inserter(deque1));
// vector1(5)를 deque1 에 복사!
for_each(deque1.begin(),deque1.end(),Print);
cout << endl;
cout << "댁 정렬" << endl;
sort ( deque1.begin() , deque1.end() );
// sort ( 시작, 끝 ) 정렬시켜준다.
for_each(deque1.begin(), deque1.end() , Print );
cout << endl;
cout << "5 find, erase" << endl;
it = find(deque1.begin(), deque1.end() ,5 );
deque1.erase( it );
for_each(deque1.begin(), deque1.end(), Print );
cout << endl;
cout << "댁 섞기" << endl;
random_shuffle( deque1.begin(), deque1.end() );
// random_shuffle <== 랜덤으로 섞어주는 함수.
for_each( deque1.begin() , deque1.end() , Print );
}
#endif
////////////////////////////////////////////////////////////////////////////////////
//
////////////////////////////////////////////////////////////////////////////////////
#if 0
#pragma once
#include <iostream>
#include <list>
#include <vector>
#include <algorithm>
#include <deque>
#include <ctime>
using namespace std;
void main()
{
srand((unsigned)time(NULL));
list<int> list1(10);
list<int>::iterator it;
for ( it=list1.begin() ; it!=list1.end() ; it++ )
{
*it=rand()%100;
}
cout << "출력" << endl;
for ( it=list1.begin(); it!=list1.end() ; it++ )
{
cout << *it << endl;
}
cout << endl;
it = find_if(list1.begin(),list1.end(),bind2nd( greater<int>(),80) );
cout << "80보다 큰 첫번째수" << *it << endl;
it = find_if(list1.begin(),list1.end(),not1(bind2nd( greater<int>(),20) ));
cout << "20보다 작은 첫번째수" << *it << endl;
list1.sort(); // 정렬!
for ( it=list1.begin() ; it!=list1.end() ; it++ )
{
cout << *it << " " ;
}
}
#endif
////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////
#if 1
#pragma once
#include <iostream>
#include <stack>
using namespace std;
void main()
{
stack<int> stack1;
stack1.push(5);
stack1.push(3);
stack1.push(7);
cout << stack1.top() << endl;
stack1.pop();
cout << stack1.top() << endl;
stack1.pop();
cout << stack1.top() << endl;
}
#endif
출처 : http://cafe.naver.com/kilius