Lyn
조회 수 41544 추천 수 0 댓글 0
Atachment
첨부 '1'
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

이번엔 lexical_cast 에 대해서 알아보자.
cast 란 이름에서 눈치챗겠지만 일종의 캐스팅 연산자(인 척 하는 함수) 이다.
string -> Integer 같은 상식적으론 말이 되지만 C++문법상으론 말이 안되는 일들을 처리한다.

일단 예제코드를 소개한다.
timer 에 관해서는
http://lunapiece.net/3795 를 참조해라

#include <boost/lexical_cast.hpp>

#include <cstdlib>

#include <string>

#include <boost/timer.hpp>

 

using namespace std;

using namespace boost;

 

string Number = "1024768";

 

void StrToIntAtoi()

{

        int num;

        for(int i=0;i < 1000000; ++i)

        {

               num = atoi(Number.c_str());

        }

        printf("atoi : %d\n", num);

}

void StrToIntStringStream()

{

        stringstream sst;

        int Num;

        for(int i=0;i < 1000000; ++i)

        {

               sst << Number.c_str();

               sst >> Num;

        }

        printf("StringStream : %d\n", Num);

}

void StrToIntLexicalCast()

{

        int num;

        for(int i=0;i < 1000000; ++i)

        {

               num = lexical_cast<int>(Number);

        }

        printf("LexicalCast : %d\n", num);

}

int _tmain(int argc, _TCHAR* argv[])

{

        timer t;

        printf("atoi 를이용한방법\n");

        t.restart();

        StrToIntAtoi();

        printf("%lf \n", t.elapsed());

 

        printf("StringStream 을이용한방법\n");

        t.restart();

        StrToIntStringStream();

        printf("%lf \n", t.elapsed());

 

        printf("lexical_cast 를이용한방법\n");

        t.restart();

        StrToIntLexicalCast();

        printf("%lf \n", t.elapsed());

 

        return 0;

}

 

.....

예제코드 자체는 별 문제가 없었으리라 본다. 준비작업도 필요없고 간단하게 쓸 수 있어서 참 좋아보이기는 한다.
하나의 함수로 이런저런 캐스팅을  다 할수 있으니 다형성도 뛰어나다.
그러나 치명적인 문제가 딱 하나 있는데...

 

 

바로 이거다 속도 =_=;

stringstream 에 비해 약 10배, atoi 에 비해선 대략 50배 가량 느리다 =_=;; 편의성을 위해서 가끔 쓰는정도라면 몰라도 자주 반복되는 루틴에서는 쓰지 않아야 하겠다.

?

  1. Delphi 2009 Generic 살펴보기

  2. No Image 05Oct
    by Lyn
    2008/10/05 by Lyn
    Views 38495 

    [TR1 살펴보기] 1. Random

  3. No Image 05Oct
    by Lyn
    2008/10/05 by Lyn
    Views 37739 

    [TR1 살펴보기] 2. Array

  4. No Image 05Oct
    by Lyn
    2008/10/05 by Lyn
    Views 35782 

    [TR1 살펴보기] 3. UnOrdered Containers

  5. No Image 22Oct
    by Lyn
    2008/10/22 by Lyn
    Views 36911 

    컨테이너가 파괴될 때 소유한 객체 자동으로 파괴하기

  6. 프로그래밍 대회 알고리즘 파트 문제

  7. No Image 11May
    by Lyn
    2009/05/11 by Lyn
    Views 37260 

    [Boost 살펴보기] 1. pool

  8. No Image 11May
    by Lyn
    2009/05/11 by Lyn
    Views 36891 

    [Boost 살펴보기] 2. any

  9. No Image 11May
    by Lyn
    2009/05/11 by Lyn
    Views 44372 

    [Boost 살펴보기] 3. timer

  10. No Image 11May
    by Lyn
    2009/05/11 by Lyn
    Views 36888 

    [Boost 살펴보기] 4. multi_array

  11. No Image 12May
    by Lyn
    2009/05/12 by Lyn
    Views 41544 

    [Boost 살펴보기] 5. lexical_cast

  12. No Image 12May
    by Lyn
    2009/05/12 by Lyn
    Views 41829 

    [Boost 살펴보기] 6. String Algorithm1

  13. No Image 20May
    by Lyn
    2009/05/20 by Lyn
    Views 42269 

    [Boost 살펴보기] 7. String Algorithm2

  14. No Image 11Jun
    by Lyn
    2009/06/11 by Lyn
    Views 43022 

    [Boost 살펴보기] 8. Tokenizer

  15. C++ new 연산자의 진실

  16. Compare, Merge 툴 간의 비교. - 작성중

  17. No Image 03Jan
    by Lyn
    2010/01/03 by Lyn
    Views 39222 

    [개인자료] 윈도우 재설치 후 설치 하는 프로그램

  18. No Image 07Feb
    by Lyn
    2010/02/07 by Lyn
    Views 39808 

    [잡설]델파이 / C++ Builder 하는 사람들의 문제점.

  19. No Image 19Feb
    by Lyn
    2010/02/19 by Lyn
    Views 34488 

    [잡설] 앱스토어의 유행. 프로그래머에겐 과연?

  20. No Image 02Mar
    by Lyn
    2010/03/02 by Lyn
    Views 38019 

    Boost 에서 자기 자신의 shared_ptr 리턴하기

Board Pagination Prev 1 2 3 4 5 6 7 ... 8 Next
/ 8