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. [잡설]델파이 / C++ Builder 하는 사람들의 문제점.

    Date2010.02.07 ByLyn Views39808
    Read More
  2. [개인자료] 윈도우 재설치 후 설치 하는 프로그램

    Date2010.01.03 ByLyn Views39222
    Read More
  3. Compare, Merge 툴 간의 비교. - 작성중

    Date2009.12.08 ByLyn Views41013
    Read More
  4. C++ new 연산자의 진실

    Date2009.08.19 ByLyn Views58203
    Read More
  5. [Boost 살펴보기] 8. Tokenizer

    Date2009.06.11 ByLyn Views43016
    Read More
  6. [Boost 살펴보기] 7. String Algorithm2

    Date2009.05.20 ByLyn Views42269
    Read More
  7. [Boost 살펴보기] 6. String Algorithm1

    Date2009.05.12 ByLyn Views41829
    Read More
  8. [Boost 살펴보기] 5. lexical_cast

    Date2009.05.12 ByLyn Views41544
    Read More
  9. [Boost 살펴보기] 4. multi_array

    Date2009.05.11 ByLyn Views36887
    Read More
  10. [Boost 살펴보기] 3. timer

    Date2009.05.11 ByLyn Views44372
    Read More
  11. [Boost 살펴보기] 2. any

    Date2009.05.11 ByLyn Views36891
    Read More
  12. [Boost 살펴보기] 1. pool

    Date2009.05.11 ByLyn Views37259
    Read More
  13. 프로그래밍 대회 알고리즘 파트 문제

    Date2008.11.22 ByLyn Views15485
    Read More
  14. 컨테이너가 파괴될 때 소유한 객체 자동으로 파괴하기

    Date2008.10.22 ByLyn Views36911
    Read More
  15. [TR1 살펴보기] 3. UnOrdered Containers

    Date2008.10.05 ByLyn Views35782
    Read More
  16. [TR1 살펴보기] 2. Array

    Date2008.10.05 ByLyn Views37738
    Read More
  17. [TR1 살펴보기] 1. Random

    Date2008.10.05 ByLyn Views38495
    Read More
  18. Delphi 2009 Generic 살펴보기

    Date2008.09.29 ByLyn Views38999
    Read More
Board Pagination Prev 1 ... 3 4 5 6 7 8 Next
/ 8