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배 가량 느리다 =_=;; 편의성을 위해서 가끔 쓰는정도라면 몰라도 자주 반복되는 루틴에서는 쓰지 않아야 하겠다.

?

List of Articles
번호 제목 글쓴이 날짜 조회 수
118 [독서후기] 말레우스 말레피카룸 - 마녀를 심판하는 망치 Lyn 2018.11.22 871
117 [개인자료] 프로그램 만들때 무조건 해야하는것.. Lyn 2011.01.26 37286
116 [개인자료] 윈도우 재설치 후 설치 하는 프로그램 Lyn 2010.01.03 39222
115 [TR1 살펴보기] 3. UnOrdered Containers Lyn 2008.10.05 35782
114 [TR1 살펴보기] 2. Array Lyn 2008.10.05 37739
113 [TR1 살펴보기] 1. Random Lyn 2008.10.05 38495
112 [Boost 살펴보기] 9. noncopyable Lyn 2011.09.15 27603
111 [Boost 살펴보기] 8. Tokenizer file Lyn 2009.06.11 43022
110 [Boost 살펴보기] 7. String Algorithm2 Lyn 2009.05.20 42269
109 [Boost 살펴보기] 6. String Algorithm1 Lyn 2009.05.12 41829
» [Boost 살펴보기] 5. lexical_cast file Lyn 2009.05.12 41544
107 [Boost 살펴보기] 4. multi_array Lyn 2009.05.11 36888
106 [Boost 살펴보기] 3. timer Lyn 2009.05.11 44372
105 [Boost 살펴보기] 2. any Lyn 2009.05.11 36891
104 [Boost 살펴보기] 1. pool file Lyn 2009.05.11 37260
103 [100권프로젝트] 프로그래밍의 정석 [10/100] - 브이로그 Lyn 2019.08.18 687
102 [100권프로젝트] 프로그래밍의 정석 - 프로그래머가 반드시 알아야할 101가지 원리원칙 [7/100] file Lyn 2019.01.03 746
101 [100권프로젝트] 파이썬 동시성 프로그래밍 [3/100] - 브이로그 Lyn 2019.02.09 576
100 [100권프로젝트] 파이썬 동시성 프로그래밍 [1/100] file Lyn 2018.10.15 843
99 [100권프로젝트] 제대로 배우는 Anguler4 [1/100] - 브이로그 Lyn 2019.01.30 1338
Board Pagination Prev 1 ... 2 3 4 5 6 7 ... 8 Next
/ 8