MyAlbum   Pet
DirectX   openGL   Java   C/C++   STL   C#   Python   Window   ActiveX   SE & Refactoring   Game   Unicode   googleDesktop   Network   Database   Web   php   asp   asp.net   Library   QT   wxWidget   Something to read  
ToDo
zelon's WebAlbum
Google Tools
Google Naver map
ToRearrange
OpenOffice.org
Eclipse
Check W3 validator
STL
e i R f
Anonymous

Contents

1 소개
2 주의사항
3 stl 을 unicode 환경으로 이전하기
4
4.1 string 에서 원하는 문자 위치 및 추출
4.2 링크

1 소개 #


STL 은 C++ 표준 라이브러리로 성능을 중요시하는 템플릿 라이브러리이다. 크게 컨테이너, 반복자(iterator), 알고리즘으로 구성되어 있다.

2 주의사항 #


  • reserver 는 capacity 만 조절해주고, resize 는 size() 의 반환값도 바뀐다. vector < char > 을 버퍼로 쓰려면 resize() 로 잡아줘야한다.
  • capacity 가 모자라서 재할당이 일어날 때는 내부 버퍼의 위치가 바뀌므로 내부 버퍼에 대한 포인터를 쓸 때는 주의해야한다. 즉, 순간적으로 쓸 때만 포인터를 이용하고, 그 포인터를 유지하고 있거나 하면 위험하다.

3 stl 을 unicode 환경으로 이전하기 #


4 #


  • clear() 는 capacity 를 0 으로 만든다. 될 수 있으면 resize(0) 을 쓰자.
  • 내부적인 버퍼의 크기가 늘어나는 시점은 컴파일러마다 다르다(윈도우의 경우 초기 capacity 가 0 이고, capacity 가 모자랄 때마다 현재 크기의 50% 를 더 늘인다 - Visual Studio .NET 2003 에서 테스트)
  • size() 의 반환값으로 0 으로 비교할바에는 empty() 를 이용하자. - effectveSTL 4항목
  • map 에 새로운 값을 넣을 때는 insert() 를 값을 업데이트할 때는 operator[] 를 이용하자. - effectiveSTL 24항목

4.1 string 에서 원하는 문자 위치 및 추출 #

	string k = "Kim Jinwook";

	string::size_type pos = k.find("Jin");

	if ( pos == k.npos )
	{
		cout << "Can't find" << endl;
	}
	else
	{
		cout << "Find : " << (int)pos << endl;
		string afterFind = k.substr(pos);

		cout << "searched : " << afterFind << endl;
	}

string k = "aa:bbb";
string a = k.substr(3);
cout << a << endl;

위의 결과는
bbb
이다.



string k = "aa:bbb";
string a = k.substr(0, 2);
cout << a << endl;

위의 결과는

aa

이다. 즉 두번째 인자 2는 위치가 아니라, 갯수이다.


4.2 링크 #