데이터셋을 시퀸스(연속적인)한 값으로 채우고 싶을 때는 iota 알고리즘을 사용합니다.

앞서 소개한 알고리즘들은 <algorithm> 헤더 파일에 정의 되어 있는 것에 반해 iota 알고리즘은<numeric> 헤더 파일에 정의 되어 있습니다.

 

itoa

template<class ForwardIterator, class T>

  void iota(ForwardIterator first, ForwardIterator last, T value);

 

 

아래는 예제 코드와 결과 입니다.

#include <iostream>

#include <vector>

#include <numeric>

using namespace std;

 

int main()

{

           vector<int> Numberlist;

           Numberlist.push_back( 2 );

           Numberlist.push_back( 5 );

           Numberlist.push_back( 7 );

           iota( Numberlist.begin(), Numberlist.end(), 2 );

 

           for( auto IterPos = Numberlist.begin(); IterPos != Numberlist.end(); ++IterPos )

           {

                     cout << *IterPos << endl;

           }

 

           return 0;

}

 

결과 >

 

위 예제를 보면 아시겠지만 iota의 세 번째 인자의 값이 시작 값이고, 이후에 값이 하나씩 증가합니다.

저작자 표시
신고
by 흥배 2012.09.06 09:00

예전에 Visual C++ 10과 관련된 책을 집필할 계획이 있어서 그때 작성한 글인데 책 출간 계획이 사라졌으므로(한참 전에)

그냥 공개합니다. 글은 초보자를 타겟으로 하고 있으며 Visula C++ 10의 디버깅 기능을 설명하고 있습니다.


도움이 되었으면 좋겠습니다^^



6장 디버깅.pdf


저작자 표시
신고
by 흥배 2012.04.23 09:00

VS.NET(VS2002)에서 MFC 프로젝트로 만들었던 프로그램을 VC++10 프로젝트로 변환하여 컴파일 했더니 에러가 발생하면서 아래의 경고가 나왔습니다.

C:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atlcore.h(35):#error This file requires _WIN32_WINNT to be #defined at least to 0x0403. Value 0x0501 or higher is recommended.

 

에러 내용은 프로젝트에서 정의된 _WIN32_WINNT 버전이 0x403인데 atlcore.h 버전이 최소 0x0501 이상이 되어야 한다는 것입니다.

 

그래서 _WIN32_WINN 정의한 stdafx.h 파일을 열어보니

#define _WIN32_WINNT 0x0400

되어 있었더군요. 그래서 일단 이것을 최신이 좋다라는 생각에 아래와 같이 했습니다. ^^;;

#define _WIN32_WINNT 0x0600

 

그랬더니 이제는 아래와 같은 에러가 나오더군요. -_-;

c:\program files\microsoft visual studio 10.0\vc\atlmfc\include\afxcmn3.inl(29): error C2065: 'CCM_SETWINDOWTHEME' : 선언되지 않은 식별자입니다.

 

그래서 바로 구글링 들어갔습니다.

쉽게 저와 같은 에러가 나와서 질문을 올린 글을 찾았고 답변도 보았습니다.

문제 해결은 stdafx.h 파일에 정의된 버전의 숫자를 아래와 같이 하면 된다고 하더군요

// Modify the following defines if you have to target a platform prior to the ones specified below.
// Refer to MSDN for the latest info on corresponding values for different platforms.
#ifndef WINVER // Allow use of features specific to Windows 95 and Windows NT 4 or later.
#define WINVER 0x0501 // Change this to the appropriate value to target Windows 98 and Windows 2000 or later.
#endif

#ifndef _WIN32_WINNT // Allow use of features specific to Windows NT 4 or later.
#define _WIN32_WINNT 0x0501 // Change this to the appropriate value to target Windows 98 and Windows 2000 or later.
#endif

#ifndef _WIN32_WINDOWS // Allow use of features specific to Windows 98 or later.
#define _WIN32_WINDOWS 0x0501 // Change this to the appropriate value to target Windows Me or later.
#endif

#ifndef _WIN32_IE // Allow use of features specific to IE 4.0 or later.
#define _WIN32_IE 0x0500 // Change this to the appropriate value to target IE 5.0 or later.
#endif

 

이렇게 하니 문제 없이 빌드가 성공 되었습니다.

 

주위에서 VC++의 새로운 버전이 나와도 쉽게 사용하지 못하는 경우가 오래 전에 만들었던 프로젝트를 포팅 할 수 없어서 이전 버전을 어쩔 수 없이 사용한다는 이야기를 종종 듣습니다.

그러나 저는 운이 좋아서인지 2002버전부터 순차적으로 새 버전의 VC++을 사용할 수 있어서 VC++6에서 VS2002로 넘어갈 때만 빌드 문제를 겪었습니다.

그래서 이런 포팅에 대한 문제는 잘 알지 못합니다. 이번에는 예전에 만들었던 코드를 C++0x 코드로 바꾸고 싶어서 오래 전에 만들었던 프로젝트를 VC++ 10로 포팅하면서 정말 정말 오랜만에 이런 문제를 겪어 보게 되고 해결 방법을 포스팅 할 수 있었습니다.

 

혹시 앞으로 또 이런 경우가 발생하면 바로 바로 공유하도록 하겠습니다
저작자 표시
신고
by 흥배 2010.10.26 09:00

VC++ 10 C++0x나 병렬 프로그래밍 라이브러리 이외에도 툴적인 측면에서도 여러 좋은 기능들이 추가 되었습니다. 알고 있으면 작업할 때 편리한데 시간이 부족하여 제가 아직 자세하게 찾아보지 못해서 소개하지 못한 것이 많이 아쉽습니다. 그래서 짥은 것이라도 틈틈이 시간나면 소개하려고 합니다.

 

VC++ 10에서는 디버깅 모드에서도 역어셈블리 코드를 볼 수 있습니다.

 

메뉴에서 “Debug” -> “Windows” -> “Disassembly”를 선택합니다.

 

아래와 같이 역어셈블리 코드 창이 나타납니다.

 

 

그러나 위 화면을 보면 코드 바이트는 표시되지 않고 있습니다.

코드 바이트를 보고 싶다면 위 화면 왼쪽 상단의 “Viewing Option”을 클릭합니다.

 

 

위와 같이 옵션을 선택할 수 있습니다. 이 중 “Show code bytes”를 선택합니다.

그러면 아래와 같이 코드 바이트가 표시됩니다.

 

 

참고

http://d.hatena.ne.jp/kkamegawa/20100130/p1

 

저작자 표시
신고
by 흥배 2010.10.11 09:00
이제 막 프로그래밍 공부를 하시는 분들 중 C 나 C++ 공부를 하시는 분들이 꽤 있는 것으로 알고 있습니다.
보통 이 분들이 공부를 하기 위해 책을 사서 보면 책에서 사용하는 VC++ 버전이 6이나 8,9 일 것입니다.

책과 똑 같은 버전의 VC++을 설치하면 책을 따라하는데 문제는 없겠지만 최신 버전이 나왔는데 그걸 사용하지
않는다는 것은 큰 낭비라고 생각합니다.^^
특히 C/C++을 공부할 때는 IDE의 기능을 거의 사용하지 않기 때문에 프로젝트를 새로 생성하고 실행만 해보면
됩니다.
그래서 VC++10에서는 어떻게 프로젝트를 생성하고 실행하는지 그림으로 보여드리겠습니다.


- 새로운 프로젝트 생성하기


VC++10을 실행한 후 위 그림과 같이 메뉴에서 선택합니다.




그림과 같이 'Visual C++'을 선택한 후 '빈 프로젝트'를 선택합니다. 그리고 아래의 이름에는 적당한 이름을 입력합니다.




위에서 프로젝트 생성이 끝나면 코딩을 하기 위해서 파일을 하나 추가합니다.
'소스 파일'을 마우스 오른쪽 클릭을 하면 나오는 메뉴에서 위와 같이 선택합니다.




보통 공부할 때는 파일 하나만 만들어서 생성하니 그림과 같이 'cpp' 파일을 선택 후 이름은 적당한 아무 이름을 입력합니다.




전 위에서 'main.cpp'을 만들었습니다. 위에 간단한 프로그램을 만들기 위해 코딩을 했습니다.



만들어진 프로그램을 실행해봅니다. IDE에서 바로 실행해보고 싶을 때는 위와 같은 메뉴를 선택합니다.




코딩할 때 잘못한 부분이 없다면 위 그림같이 프로그램이 실행됩니다.



아주 아주 쉽죠? ^^
C/C++ 입문 공부도 VC++ 10에서 하세요 ~ ^^

저작자 표시
신고
by 흥배 2010.06.16 08:30
이제 막 프로그래밍 공부를 하시는 분들 중 C 나 C++ 공부를 하시는 분들이 꽤 있는 것으로 알고 있습니다.
보통 이 분들이 공부를 하기 위해 책을 사서 보면 책에서 사용하는 VC++ 버전이 6이나 8,9 일 것입니다.

책과 똑 같은 버전의 VC++을 설치하면 책을 따라하는데 문제는 없겠지만 최신 버전이 나왔는데 그걸 사용하지
않는다는 것은 큰 낭비라고 생각합니다.^^
특히 C/C++을 공부할 때는 IDE의 기능을 거의 사용하지 않기 때문에 프로젝트를 새로 생성하고 실행만 해보면
됩니다.
그래서 VC++10에서는 어떻게 프로젝트를 생성하고 실행하는지 그림으로 보여드리겠습니다.


- 새로운 프로젝트 생성하기


VC++10을 실행한 후 위 그림과 같이 메뉴에서 선택합니다.




그림과 같이 'Visual C++'을 선택한 후 '빈 프로젝트'를 선택합니다. 그리고 아래의 이름에는 적당한 이름을 입력합니다.




위에서 프로젝트 생성이 끝나면 코딩을 하기 위해서 파일을 하나 추가합니다.
'소스 파일'을 마우스 오른쪽 클릭을 하면 나오는 메뉴에서 위와 같이 선택합니다.




보통 공부할 때는 파일 하나만 만들어서 생성하니 그림과 같이 'cpp' 파일을 선택 후 이름은 적당한 아무 이름을 입력합니다.




전 위에서 'main.cpp'을 만들었습니다. 위에 간단한 프로그램을 만들기 위해 코딩을 했습니다.



만들어진 프로그램을 실행해봅니다. IDE에서 바로 실행해보고 싶을 때는 위와 같은 메뉴를 선택합니다.




코딩할 때 잘못한 부분이 없다면 위 그림같이 프로그램이 실행됩니다.



아주 아주 쉽죠? ^^
C/C++ 입문 공부도 VC++ 10에서 하세요 ~ ^^

저작자 표시
신고
by 흥배 2010.06.16 08:30
| 1 |

티스토리 툴바