bind, function 간단 사용 방법

boost, tr1 다 설명...



// bind 할 함수 
int sum( int a , int b )
{
	return a+b;
}

// boost bind 사용
// _1, _2 는 입력 인자
#include <boost/bind.hpp>

boost::bind( &sum, _1, _2 );

// tr1 bind 사용
// boost와는 다르게 인자를 쓸려면 std::tr1::placeholders 사용 해야함.
#include <functional>

std::tr1::bind( &sum, std::tr1::placeholders::_1, std::tr1::placeholders::_2 );

///////////////////////////////////////////////////////////////////////////////////////////////

// bind 한 함수를 담는 boost::function
#include <boost/function.hpp>

boost::function< int(int, int) > temp = boost::bind( &sum, _1, _2 );

// bind 한 함수를 담는 std::tr1::function
#include <functional>

std::tr1::function< int(int, int) > temp = std::tr1::bind( &sum, std::tr1::placeholders::_1, std::tr1::placeholders::_2 );

///////////////////////////////////////////////////////////////////////////////////////////////

// bind class 처리 - tr1 도 똑같아용....
class boostBind
{
private:
	std::vector< boost::function< int( int, int ) > > m_funcArray;	// 바인딩 한 함수를 모으기 위한 vector

public:
	boostBind() 
	{
		m_funcArray.push_back( boost::bind( &boostBind::sum, this, _1, _2 ) );
		m_funcArray.push_back( boost::bind( &boostBind::sub, this, _1, _2 ) );
	}
	~boostBind() {}

	int sum( int a , int b )
	{
		return a+b;
	}

	int sub( int a , int b )
	{
		return a-b;
	}

	void run()
	{
		// 덧셈 함수 호출
		int temp1 = m_funcArray[0]( 100, 200 );

		// 뺄셈 함수 호출 
		int temp2 = m_funcArray[1]( 200, 100 );
	}
};
by 널부러 2012. 10. 30. 19:26

어떤 자료형이든 다 넣을수 있는 그런 컨테이너...

사용법은 아래와 같다...

그런데 이건 어디다 써먹으면 좋을까? 잘모르겠지만 일단 정리...

#include <boost/any.hpp>

int main()
{
	boost::any all;
	
	// 아래와 같이 넣으면 int형으로 변경 
	// 값만 써도 알아서 인식하지만 확실하게 어떤 자료형이 들어갔는지 알기 위해 
	all = (int)100;
	
	// 이상태에서는 자료형은 안바뀌고 값만 갱신
	all = 200;

	// 여기서 다른 자료형으로 데이터를 넣으면 자료형도 변경 되면서 데이터 갱신
	all = (float)1.3f;

	// 값을 꺼내는 방법 첫번째 -  타입을 비교 하고 맞을때 값 꺼내기 
	if( all.type() == typeid(float) )
	{
		float &output = boost::any_cast<float &>(all);
	}

	// 값을 꺼내는 방법 두번째 -  try catch 문을 사용 해서 꺼내기 
	// 여기서는 실패에서 에러 나겠죵...
	try
	{
		int &otput = boost::any_cast<int &>(all);
	}
	catch(const boost::bad_any_cast &e)
	{
		printf("%s\n", e.what() );
	}
	
	// 변수 초기화는 요렇게???
	all = boost::any();

	if( all.empty() )
	{
		printf("아무것도 없네요\n");
	}
	
	return 0;
}


by 널부러 2012. 10. 18. 13:40

이거 쓰면 Thread를 그룹으로 묶어서 쓸수 있심..

사용법은 아래 보셈..

#include "boost/thread.hpp"

class threadFunc
{
    int m_a;
public:
    threadFunc( int a )
    {
        m_a = a;
    }

    void operator()()  
    {  
        printf("[%d]일단 들어왔네!!! [%d]\n", boost::this_thread::get_id(), m_a );

        Sleep(5000);

        printf("[%d] 끝났네 [%d]\n", boost::this_thread::get_id(), m_a );
    }  
};

int main()
{
    boost::thread_group tg;

    tg.create_thread( threadFunc(1) );                        // 1번 스래드 생성 
    tg.add_thread(new boost::thread( threadFunc(2) ) );        // 2번 스래드 생성 
    tg.add_thread(new boost::thread( threadFunc(3) ) );        // 3번 스래드 생성 

    //모든 스래드가 종료 될때까지 대기 
    tg.join_all();

    return 0;
}

by 널부러 2012. 10. 16. 22:36

문자를 숫자로 or 숫자를 문자로 바꿀때 사용 한다.

사용법은 간단하다.. 아래보셈..

#include "boost/lexical_cast.hpp"

int main()
{
    std::string input = "1";
    int output = 0;

    try
    {
        convertDta = boost::lexical_cast<int>( inputValue );
    }
    catch(boost::bad_lexical_cast &e)
    {
        // 변경이 안되면 아래 에러 출력
        printf("%s\n", e.what() );
        return false;
    }

    return 0;
}

그런데 이거 잘 써먹지는 못할듯..

문제가 2가지가 있심.. BYTE(unsigned char) 변환이 잘 안된다는거 하고

atoi(itoa), stringstream 등으로 변환하는거보단 촐랭 느리다는거...

아무튼 오늘도 뭔가 하나 올림..



by 널부러 2012. 10. 16. 21:38

boost의 mulit_index를 알기 쉽게 설명해준 자료가 있어 링크합니다..

(흥배님 감사합니다!!)



개념 설명은 위에것과 아래 첨부된 [SDC 3rd] 01 Boost_multiindex(2012-05-19).zip 파일을 보면 될것입니다.

composite_key 사용 설명은 따로 없어서 내가 추가로 정리 해서 boostTest._multi_index.zip 파일 올립니다.


[SDC 3rd] 01 Boost_multiindex(2012-05-19).zip


boostTest._multi_index.zip


by 널부러 2012. 10. 15. 23:54
소스코드 뒤로가기 단축키를 몰라서 찾다가 잘 정리해둔 블로그가 있어서 링크 걸어봅니다 -_-

주소만 긁어와봅니다..

원본이 있는 블로그는
lum7671.egloos.com
입니다.

아흑 허락 안받고 마구 퍼와서 죄송합니다 ㅠ.ㅠ

2008/03/13   KDevelop, 에디팅의 팁 & 이맥스(Emacs)와 함께 사용하기 [0]
KDevelop에서 header 파일과 source 파일을 한꺼번에 보이게 해서 개발할 수 있는 에디팅 팁과 부족하지만 KDevelop의 메뉴에 이맥스(Emacs)를 등록해서 이맥스(Emacs)와 사용하는 방법을 보겠다.

2008/01/26   KDevelop, 단축키(Shortcuts) #2 [0]
첫 번째 KDevelop에 대한 단축키 정리 후 보니 Kate 편집기용 단축키 목록을 발견했다. 그래서 두 번째로 정리해 보았다. 뭐 대충 알고 쓰던 것이 많긴 했는데 "일치하는 괄호로 이동(Ctrl-6)" 이건 중요한 것 같다. 링크 : KDevelop 단축키(Shortcuts) 정리 #2

2008/01/24   KDevelop, 2% 부족한 KDevelop의 단축키 (수정됨) [4]
C++과 같은 프로그램을 개발하다 보면 함수에 대한 구현부와 선언부를 찾아갈 필요를 많이 느낀다. 그래서 emacs나 vim에서는 etags, ctags, cscope으로 이와 같은 기능을 단축키로 잘 지원하고 있다. KDevelop에서도 단축키를 잘 지원을 할까? 하는 생각에서 이번에 KDevelop 단축키를 정리하고 기능을 찾아보았다.

2008/01/24   KDevelop, 단축키(Shortcuts) [0]
KDevelop의 단축키를 나름데로 정리해봤습니다. 링크 : KDevelop 단축키 정리(Shortcuts)

2008/01/05   KDevelop3, 팁, 주석에 todo, Fixme 를 붙여서 북마크처럼 활용하자. [0]
오늘도 KDevelop3 이것 저것 잠깐 만저보고 있는데 유용할것 같은 팁이 생겨서 이렇게 글을 쓴다. 보통 프로그램을 짜다 보면 나중에 보강을 해야지, 누가 고쳐줬으면 좋겠다. 하는 부분이 생긴다. 그러면 주석으로라도 남기고 설명을 달아 놓는데... 자신이 달아놓은 "나중에 해야지"가 생각이 가물가물 나기는 하는데... 어디있는지 찾는것은 ...

2008/01/05   cmake, KDevelop3 용 cmake Generate [0]
cmake의 help를 보면, $ cmake --help ... -G = Specify a makefile generator. ... Generators The following generators are available on this platform: KDevelop3 =...

2007/11/14   [KDevelop] Project Options 설정 방법 #1 - cmake 프로젝트 디렉토리 설정 [0]
내가 원했던것은 상대적 경로를 설정해서, 버전관리를 사용하고 개발 디렉토리와 ID가 제각각인 버전관리 개발 사용자들이 KDevelop의 kdevelop(확장자) 프로젝트 파일을 열면 수정없이 사용할 수 있는것이었다. 허나, 이곳 저곳 찾아봐도 상대적인 경로를 설정하는 방법이 없었다. (생각하기로는 $PROJECT_PATH 와 같은 환경 변수...

by 널부러 2011. 2. 21. 23:10
그냥 정리해봅니다..

리눅스에서 netstat 명령어 쓸때 옵션 관련해서

-a : 모든 소캣의 상태를 보여준다.
-t : tcp 소캣만 보여준다.
-n : 로컬 주소와 나가는 주소를 도메인에서 ip형태로 보여준다.

명령 실행은 netstat -atn 요렇게...
그럼 화면에 아래와 같이 나올텐데 중요하게 봐야할꺼는

Recv-Q 하고 Send-Q 쪽에 데이터가 쌓이는지 봐야겠지요 -_-?
저게 쌓여있으면 뭔가 데이터 전송하는데 문제가 있다는거니까요 -_-;

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN    
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN    
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN    
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN    
tcp6       0      0 :::22                   :::*                    LISTEN    
tcp6       0      0 ::1:631                 :::*                    LISTEN


by 널부러 2011. 1. 12. 11:45
매번 깔면 초기화 해서 파일로 저장하면 좋은데.. 파일로 저장하는게 없으니..
그냥 스샷 찍어서 올립니다.

by 널부러 2010. 9. 14. 14:40
기본은 텝이 8칸으로 되어있어서 좀 불편하다 4칸으로 바꾸자..

by 널부러 2010. 9. 14. 14:36
deb http://ftp.daum.net/debian lenny main contrib non-free
deb-src http://ftp.daum.net/debian lenny main contrib non-free

by 널부러 2010. 7. 21. 14:20
| 1 2 3 4 5 6 |