IT-개발/C및C++(33)
-
C++11 - sample - array(1)
#include #include int main() { std::array arr1; for( int i = 0; i < 5; ++i ) { arr1[i] = i+1; } for( int i = 0; i < 5; ++i ) { std::cout
2018.04.18 -
[펌] C/ C++ 전처리 - #if #else #elif #endif 등등...
(펌) : http://egloos.zum.com/judoboyjin/v/4545100 #ifdef, #ifndef는 매크로의 존재 여부만으로 컴파일 조건을 판단하며 매크로가 어떤 값으로 정의되어 있는지는 평가하지 않는다. 이에 비해 #if는 매크로의 값을 평가하거나 여러 가지 조건을 결합하여 컴파일 여부를 결정하는 좀 더 복잡한 전처리문이다. #ifdef보다는 사용법이 조금 까다롭지만 C 언어의 조건문과 유사하므로 쉽게 익힐 수 있다. 기본 형식은 다음과 같다. #if 조건1 코드1 // 조건1을 만족하면 코드1을 컴파일 #elif 조건2 코드2 // 조건 2가 만족되면 코드2를 컴파일 #else 코드3 // 둘 다 맞지 않으면 코드 3을 컴파일 #endif C 언어의 if .... else if ....
2017.05.17 -
format 숫자 출력하기
C 언어에 long long(아주 긴 정수) 타입과 long double 타입이 추가되었지만 이를 출력하는 방법을 몰라서 제대로 사용하지 못하는 경우가 있다. printf에서 이를 출력하려면 각각 %lld, %lf를 사용하면 된다. long 타입 값은 %ld로 출력하면 된다. 구체적인 예를 보이면 다음과 같다.#include int main() { long ln = 123456789L; long long lln = 1234567890123456789LL; double dx = 1.234567890123456789; long double ldx = 1.234567890123456789L; printf("ln = %d\n", ln); printf("ln = %ld\n", ln); printf("lln = %..
2017.05.11 -
STL - algorithm - generate
컨테이너의 특정 구간을 특정 값으로 채우고 싶을 때가 있다. 이 값이 동일한 것이라면 컨테이너의 assign() 멤버를 사용하면 되지만 동일한 값이 아니라면 assign()을 사용할 수 없다. 이 때 사용하는 알고리즘이 generate이다. generate 알고리즘에 값을 채울 컨테이너의 시작과 끝, 값을 생성할 함수를 파라미터로 넘긴다 generate 알고리즘의 대상이 되는 컨테이너는 값을 채울 공간이 미리 만들어져 있어야 한다. 즉 generate는 컨테이너에 데이터를 추가하는 것이 아니고 기존의 데이터를 다른 값으로 변경하는 것이다. #include #include #include struct User{int UID;int RaceType;int Sex;int Money;}; struct SetUs..
2017.01.04 -
STL - algorithm - for_each
for_each는 순차적으로 컨테이너들에 담긴 데이터를 함수의 파라미터로 넘겨서 함수를 실행시키는 알고리즘이다 #include #include #include using namespace std; struct User{int UID;int PlayTime;}; struct UpdatePlayTime{void operator() ( User& user ){user.PlayTime += PlayTime;}int PlayTime;}; int main(){vector Users;User user1; user1.UID = 1; user1.PlayTime = 40000;User user2; user2.UID = 2; user2.PlayTime = 0;User user3; user3.UID = 3; u..
2017.01.04 -
STL - algorithm - find
// ItemCodes 컨테이너의 시작과 끝 사이에서 15를 찾는다.find( ItemCodes.begin(), ItemCodes.end(), 15 ); #include #include #include using namespace std;int main(){vector CharItems;CharItems.push_back( 12 );CharItems.push_back( 100 );CharItems.push_back( 77 );vector::iterator FindIter; // CharItems의 처음과 끝에서 12를 찾는다.FindIter = find( CharItems.begin(), CharItems.end(), 12 );if( FindIter != CharItems.end..
2017.01.04