본문 바로가기

컴퓨터/C++_STL13

에지(edge) 객체 구현해 보기 노드와 노드를 잇는 선분(edge)를 표현하는 객체를 나타내기 위한 class 를 작성해 본다. edge를 STL의 set이나 map 에 넣기 위하여 operator< 를 정의하며, 또한 operator== 역시 정의해 본다. class edge 의 attribute으로는 std::string 으로 표현하는 두 개의 노드만을 갖는다. operation 으로는 생성자류, 파괴자, operator 2010. 5. 8.
파일 목록 가져 오기 일반화 시키기 python의 glob과 같은 기능, 즉 정해진 경로 안에 있는 파일 목록을 모두 얻어 오는 기능은 빈번하게 사용되는 기능임에도 불구하고 STL이나 MFC/API에는 이에 관한 기능이 하나의 함수로 제공되지 않는 것으로 보인다. 대신 FindFirstFile, FindNextFile API를 이용하여 파일 목록을 얻어갈 수는 있다. 파일 목록을 얻어갈 때, 얻어 갈 파일의 속성으로 주로 확장자를 사용하는 경우가 많다. 즉, 확장자가 jpg 인 것이나 txt 인 것들을 얻어가는 경우처럼. 또는 특정 파일 속성, 가령 FILE_ATTRIBUTE_ARCHIVE와 같은 속성을 검사할 수도 있기는 한데, 어쨌거나 파일의 특성에 대하여 확장자나 이러한 속성만을 사용하여 파일 목록을 얻어간다는 것은 융통성이 없다. .. 2010. 1. 9.
멤버 함수의 포인터를 배열에 넣는 방법 선언 [code cpp] bool (CTest::*my_arr_of_func_prt[])(int) = { CTest::Up, CTest::Down, CTest::Left, CTest::Right }; [/code] 사용 [code cpp] CTest t; (t.*my_arr_of_func_prt[1])(10); // t.Down(10); 과 같다. [/code] 만약 현재 클래스가 CTest 라면, [code cpp] (this->*my_arr_of_func_prt[1])(10); // t.Down(10); 과 같다. [/code] 2009. 12. 27.
template과 iterator 변수 사용하기 만약 template에 대한 iterator를 저장할 변수를 선언하려면 GCC의 경우, [code cpp] typename [/code] 를 써야 한다. 다음은 내가 실제 작성하고 있는 코드에서 가져온 예. [code cpp] template bool bootstrap_resample( vector *src, int resample_number, double (*estimate)(vector*)) { vector::iterator pos = src->begin(); for(; pos != src->end(); pos++){ // 우선 test cout begin(); for(; pos != src->end(); pos++){ // 우선 test cout 2009. 12. 27.