힙이나 스택에서 초기화를 안하면 뭔 값이 들어갈까?? 
마소에서 마음데로 정해 줬겠지만..ㅋㅋ
그래서 검색해봤다.

0xcccccccc : 초기화 되지 않은 지역 변수
0xcdcdcdcd : 초기화되지 않은 힙에 할당된 메모리
0xdddddddd : 힙에서 free된 메모리
0xfeeefeee : 힙에서 free된 메모리
0xfdfdfdfd : 힙에 할당된 메모리의 초가 범위(할당된 메모리의 양 끝 )
이런 비밀이 있었다.


'Programming > 이것저것' 카테고리의 다른 글

Symbol  (0) 2010.04.24
IL Code에 심볼 정보가 포함되는 이유  (0) 2010.04.24
[Design Pattern] Singleton Pattern  (2) 2010.04.16
typeid 연산자  (1) 2010.04.15
enum 문자열  (0) 2010.04.09
다른 분들도 이 연산자를 사용하는지 모르겠지만... 저는 오늘 첨 알았네용ㅠㅠ
프로그래밍을 하던 중 인스턴스에 따라서 분기를 결정해야 했습니다. 평소 하던 방법은 문자열을 넣거나 nType이라는 타입 정수를 넣어서 그것에 맞춰서 해줬죠..
하지만 오늘 검색해보니 C++에서 C#과 같은 타입 비교 연산자가 있더군요;;
놀랐습니다.ㅋㅋ
아~~~주 좋습니다. ㅋㅋ


그래서 비교 코드를 아래 처럼 바꿀 수 있었죠.

아래는 skyarro라는 아이디를 쓰시는 블로그에서 퍼왔습니다.
결과 화면입니다.



모두 즐프요~~ㅋㅋ

'Programming > 이것저것' 카테고리의 다른 글

초기화 하지 않은 메모리  (0) 2010.04.16
[Design Pattern] Singleton Pattern  (2) 2010.04.16
enum 문자열  (0) 2010.04.09
ASCII Table  (0) 2010.04.05
사용자 정의 exception (1)  (0) 2010.03.21

Algorithm

#include <algorithm>

sort( b, e ) // 범위 [b, e]에 의해 정의되는 요소들을 재 정렬시킨다.

max( b, e ) // b와 e중 더 큰 값을 리턴시킨다.

min( b, e ) // b와 e중 더 작은은 값을 리턴시킨다.

'NativeCode > C++ STL' 카테고리의 다른 글

STL find()와 sort() 사용하기  (0) 2010.07.27
list  (0) 2010.03.18
Sequential Container  (0) 2010.03.18
stl C++ Exception Class  (0) 2010.03.18
String  (0) 2010.03.18

list


#include <list>


list<Student_info> extract_failslist<Student_info>& students )

{

list<Student_info> fail;

list<Student_info>::iterator iter = students.begin();


         while( iter != students.end() )

{

if( fgrade( *iter) )

{

fail.push_back( *iter );

iter = students.erase( iter );

}

      else

++iter;

}


return fail;

}


list sort 함수

list<Student_info> students;

students.sort( compare );


list<int> l;

l.sort(), l.sort( cmp ) // list 의 타입에 대한 < 연산자를 사용하거나, cmp 함수를 사용하여 l의 요소들을 정렬합니다.



// 반복자 미 사용

forlist<Student_info>::size_type i = 0; i != students.size(); ++i )

cout << students[ i ].name << endl;


// 반복자 iterator 사용

forlist<Student_info>::const_iterator iter = students.begin(); iter != students.end(); ++iter )

cout << iter->name << endl;


'NativeCode > C++ STL' 카테고리의 다른 글

STL find()와 sort() 사용하기  (0) 2010.07.27
Algorithm  (0) 2010.03.18
Sequential Container  (0) 2010.03.18
stl C++ Exception Class  (0) 2010.03.18
String  (0) 2010.03.18

모든 순차 컨테이너들과 string 타입은 다음과 같은 연산들을 제공한다.


container<T>::iterator

container<T>::const_iterator // 이 컨테이너에 대한 반복자의 타입명

container<T>::size_type // 이 컨테이너의 인스턴스가 가질 수 있는 최대 사이즈 갑을 저장할 수 있는 타입의 이름

c.begin()

c.end() // 컨테이너의 첫 번째 및 마지막 요소를 가리키는 반복자

c.rbegin()

c.rend() // 컨테이너의 요소를 역순으로 접근할 수 있도록 컨테이너의 마지막 및 (하나 이전의) 첫 번째 요소를 가리키는 반복자

container<T> c();

container<T> c( c2 ); // 빈 컨테이너로서의 c를 정의하거나, 만약 주어진다면, c2의 복사본으로서의 c를 정의합니다.

container<T> c( n ); // T의 타입에 따라 값지정-초기화된 n개의 요소들을 갖는 컨테이너로서의 c를 정의합니다. 만약 T가 클래스 타입이라면, 이 클래스 타입에 따라 요소들이 어떻게 초기화될 것인지가 결정됩니다. 만약 T가 내장된 연산 타입이라면, 요소들은 0으로 초기화 됩니다.


container<T> c( n, t ); // t의 복사본인 n 개의 요소들을 갖는 컨테이너로서의 c를 정의합니다.

container<T> c( b, e ); // b, e 범위의 반복자로 얻어진 요소들의 복사본을 담는 컨테이너를 생성합니다.

c = c2 // 컨테이너 c의 내용을 컨테이너 c2의 복사본으로 변경합니다.

c.size() c의 요소들의 개수를 size_type 으로 리턴합니다.

c.empty() c에 요소가 하나도 없는지 알려주는 함수

c.insert( d, b, e ) // b, e 범위의 반복자가 가리키는 요소들을 복사해서 d 바로 앞에 삽입시킨다.

c.erase( iterator )

c.erase( b, e ) // 컨테이너 c로부터 iterator가 기리키는 요소, 또는 (b, e ) 가 나타내는 범위의 요소들을 삭제한다. 이 연산은 list에 대해서는 빠르지만, vector 및 string에 대해서는 느릴 수 있습니다. 왜냐하면, 이러한 타입에 대해서는 삭제된 요소 다음에 있는 모든 요소들을 복사하는 작업이 필요하기 때문입니다. list에 대해서는 삭제된 요소에 대한 반복자들만 무효화되지만, vector와 string에 대해서는 삭제된 요소의 다음에 위치한 요소들을 가리키는 모든 반복자들이 무효화 됩니다.

c.push_back(t) // c의 끝을 가리키는 요소에 값 t를 추가합니다.


임의 접근을 지원하는 컨테이너들과 string 타입은 다음의 기능을 제공합니다. 

c[n] // 컨테이너 c로부터 n의 위치에 있는 문자를 얻습니다.



반복자 연산

*it // 반복자 iterator를 역참조하여 iterator가 가리키는 위치에 저장된 값을 얻습니다. 이 연산은 보통 it->x 로 사용이됩니다.

++it, it++ 반복자를 증가시켜 컨테이너의 다음 요소를 가리키게 합니다.

b == e, b != e // 두 반복자가 동일한지, 동일하지 않은지 비교합니다.


'NativeCode > C++ STL' 카테고리의 다른 글

Algorithm  (0) 2010.03.18
list  (0) 2010.03.18
stl C++ Exception Class  (0) 2010.03.18
String  (0) 2010.03.18
Vector  (0) 2010.03.18

logic_error

domain_error

invalid_argument

length_error

out_of_range

runtime_error

range_error

overflow_error

underflow_error


e.what() 오류를 발생시킨 것이 무엇인지를 설명하는 값을 리턴합니다. 

'NativeCode > C++ STL' 카테고리의 다른 글

Algorithm  (0) 2010.03.18
list  (0) 2010.03.18
Sequential Container  (0) 2010.03.18
String  (0) 2010.03.18
Vector  (0) 2010.03.18

String

#include <string>

s1 < s2 string 인 s1과 s2를 사전 검색 순서로 비교합니다.

s.width( n ) 다음 번 출력에서( n이 생력되면 변화 없음), 스트림 s의 넓이를 n으로 설정합니다. 출력의 오른쪽에 주어진 넓이만큼의 공백이 덧붙여집니다. 이전 넓이를 리턴합니다. 표준 출력 연산자는 기존의 넓이 값을 사용하며, width(0)를 사용하면 넓이를 리셋시킵니다.


s.substr( i, j ) // ( i ~ i + j ) 범위의 인덱스에 해당하는 s의 문자들을 복사하여 새로운 string을 생성합니다.

getline( is, s ) // is로부터 한 라인의 입력을 받아들여 s에 저장합니다.

s += s2 // s를 s + s2의 값으로 변경합니다.


'NativeCode > C++ STL' 카테고리의 다른 글

Algorithm  (0) 2010.03.18
list  (0) 2010.03.18
Sequential Container  (0) 2010.03.18
stl C++ Exception Class  (0) 2010.03.18
Vector  (0) 2010.03.18

Vector

#include <vector>

// 벡터는 임의 접근에 대해 최적화되어 있다. 최적화의 대가로, 벡터의 끝이 아닌 다른 위치에 요소를 삽입하고 삭제하는 작업은 매우 느리다.

vector<int> vec_int; // int 형의 빈 vector 생성

vec_int.begin() // vec_int의 첫 번째 요소를 나타내는 값을 리턴
vec_int.end() // vec_int의 마지막 요소를 나타내는 값을 리턴

vec_int.push_back( e ) // vector에 e로 초기화된 요소 하나를 추가

vec_int[ i ] // i 위치에 저장된 값을 리턴

vec_int.size() // vec_int 에 들어있는 요소들의 개수를 리턴

vec_int.erase( vec_int.begin() + i ) // 시작위치부터 i번째 떨어져 있는 값을 지움


반복자

  • 컨테이너와 컨테이너 안에 있는 요소를 구별시킵니다.
  • 그 요소의 값을 확인할 수 있습니다.
  • 컨테이너 안에 있는 요소들 간에 이동을 할 수 있는 연산을 제공합니다.
  • 컨테이너가 효과적으로 처리할 수 있는 방식으로 가용한 연산들을 한정시킵니다.


// 반복자 미 사용

forvector<Student_info>::size_type i = 0; i != students.size(); ++i )

cout << students[ i ].name << endl;


// 반복자 iterator 사용

forvector<Student_info>::const_iterator iter = students.begin(); iter != students.end(); ++iter )

cout << ( iter->name << endl;


v.reserve( n ) // n 개의 요소를 담을 수 있는 공간을 확보합니다. 하지만, 초기화하지 않습니다. 이 연산은 컨테이너의 크기를 변화시키지는 않습니다. 단지 반복적인 insert나 push_back으로 인한 빈번한 메모리 할당을 막기 위해서 사용합니다.

v.resize( n ) // v의 사이즈를 n이 되도록 만듭니다. 만약 n이 현재 v의 사이즈보다 작다면, n 이하의 요소들은 vector에서 제거됩니다. 만약 n이 현재 사이즈보다 크다면, 새로운 요소들이 v에 추가되고 v의 타입에 의해 적당한 값으로 초기화 됩니다.

'NativeCode > C++ STL' 카테고리의 다른 글

Algorithm  (0) 2010.03.18
list  (0) 2010.03.18
Sequential Container  (0) 2010.03.18
stl C++ Exception Class  (0) 2010.03.18
String  (0) 2010.03.18

+ Recent posts