[C++] vector 최댓값, 최솟값, 인덱스 구하기
vector 컨테이너에서 최대값, 최소값을 구할 경우 for문을 작성할 수도 있지만, 복잡하기 때문에 algorithm 라이브러리의 있는 max_element를 사용하여 한줄로도 간단하게 최대값을 구할 수 있다. 또한, max_element를 사용하면 최대값의 인덱스 값을 구할 수 있으며, 최소값을 구하기 위해서는 min_element를 사용한다. max_element의 결과로 최대값을 가리키는 반복자를 반환하기 때문에 이를 * 연산자를 사용하면 최대값을 구할 수 있다. 또한, vector는 일련의 반복자로 구성되어 있으므로 최대값을 가리키는 반복자를 맨 처음을 가리키는 v.begin()만큼 빼준다면 인덱스 값을 구할 수 있다. vector와 유사한 구조인 deque에서도 동일하게 이용할 수 있다. #i..
2021.06.18
[C++] 파일 분할 작성
헤더파일에는 클래스의 선언을, cpp 파일에는 클래스의 정의를 작성한다. 클래스의 선언은 멤버변수의 선언과 멤버함수의 원형을 포함하게 되고, 클래스의 정의는 멤버함수의 구현부로 이루어져 있다. Test.h 소스코드 #ifdef __TEST_H__ #define __TEST_H__ class Test { private: char ch[10]; int test; public: void testing(char* ID, int number); }; #endif Test.cpp 소스코드 #include #include #include "Test.h" using namespace std; void Test::testing(char* ID, int number) { ~~~~ } Main.cpp 소스코드 #include
2018.11.26
[C] assert 매크로
assert 매크로는 assert.h 헤더 파일에 정의되어 있으며 정해진 조건에 맞지 않는 경우 프로그램을 중단한다. 1. assert에 지정한 조건식이 거짓(false)일 때 프로그램을 중단2. assert에 지정한 조건식이 참(true)일 때는 프로그램을 계속 실행 단, Visual Studio 에서는 Debug 모드에서만 작동하며 Release 모드에서는 동작하지 않음 포인터가 NULL이면 프로그램을 중단하는 예제 #define _CRT_SECURE_NO_WARNINGS #include #include #include // assert가 정의된 헤더 파일 void copy(char *dest, char *src) { assert(dest != NULL); // dest이 NULL이면 프로그램 중단 ..
2018.11.26
[C++] goto 문
C++ goto 문 사용법 goto identifier; identifier에 의해 지정된 레이블 문은 현재 함수에 존재해야 하며, 가급적 goto 문 보다는 break, continue 및 return 문을 사용하는 것이 좋은 프로그래밍 스타일이라고 한다. 그러나 break 문은 한 수준의 루프만 종료하므로, 중첩이 잦은 루프를 종료하고 싶을 때는 goto 문을 사용한다. goto 문 예제 // goto_statement.cpp #include int main() { int i, j; for ( i = 0; i < 10; i++ ) { printf_s( "Outer loop executing. i = %d\n", i ); for ( j = 0; j < 2; j++ ) { printf_s( " Inner..
2018.09.07
[C++] 조건부 연산자
조건부 연산자 사용법 expression ? expression : expression 조건 연산자(? :)는 피연산자 3개를 사용하는 삼항 연산자이다. 조건 연산자는 다음과 같이 사용된다. - 첫번째 피연산자는 암시적으로 bool 자료형으로 변환된다. - 첫번째 피연산자가 true(1) 이면 두 번째 피연산자가 계산된다. - 첫번째 피연산자가 false(0) 이면 세 번째 피연산자가 계산된다. 조건 연산자의 결과는 두 번째 또는 세 번째 피연산자가 계산된 결과이다. 마지막 피연산자 2개 중 1개만 조건식에서 계산된다. 조건식은 오른쪽과 왼쪽이 연결되어있으며, 첫번째 피연산자는 정수 계열 또는 포인터 형식이어야 한다. 조건부 연산자 예제 // expre_Expressions_with_the_Conditi..
2018.09.06
[C, C++] 메모리 함수 memset, memmove, memcpy, memcmp, memchr
자주 쓰이는 메모리 함수 정리 * memset 메모리 블록을 채운다. ptr로 시작하는 메모리 주소로부터 num 개의 바이트를 value 값으로 채운다. 이 때 value는 unsigned char 로 형변환 된다. #include // C++ 에서는 void * memset ( void * ptr, int value, size_t num ); memset 예제 #include #include int main () { char str[] = "almost every programmer should know memset!"; memset (str,'-',6); puts (str); return 0; } 실행 결과 ------ every programmer should know memset! * memmov..
2018.09.05
[C++] 반복자 (Iterator)
C++ 반복자(Iterator) C++ 라이브러리는 반복자를 제공하는데 이것을 사용하면 라이브러리의 방식대로 자료구조를 액세스 할 수 있다. 따라서 라이브러리가 효과적으로 동작한다는 것을 보장 할 수 있다는 장점이 있다. 즉, 포인터와 상당히 비슷하며, 컨테이너에 저장되어 있는 원소들을 참조할 때 사용한다. 추상적으로 말하자면, 반복자란 컨테이너에 저장되어 있는 모든 원소들을 전체적으로 훑어 나갈 때 사용하는, 일종의 포인터와 비슷한 객체라고 할 수 있다. 알고리즘 마다 각기 다른 방식으로 컨테이너를 훑어가기 때문에, 반복자에도 여러가지 종류가 있게 된다. 반복자의 성질 - 컨테이너와 컨테이너 안의 있는 요소를 구별 - 요소의 값 확인 - 컨테이너 안에 있는 요소들 간에 이동할 수 있는 연산 제공 - 컨..
2018.09.04
[C++] 자료형의 종류와 범위 그리고 WORD 와 DWORD
기본 자료형의 종류 구분 자료형 크기(byte) 범위 문자형 char 1 byte -128 ~ 127 unsigned char 1 byte 0 ~ 255 정수형 __int8 1 byte -128 ~ 127 __int16 2 byte -32,768 to 32,767 (signed) short (int) 2 byte -32,768 to 32,767 (unsigned) short (int) 2 byte 0 ~ 65,535 __int32 4 byte -2,147,483,648 ~ 2,147,483,647 (signed) int 4 byte -2,147,483,648 ~ 2,147,483,647 unsigned int 4 byte 0 ~ 4,294,967,295 (signed) long (int) 4 byte -..
2018.09.03
[C, C++] 프로그램 수행시간 측정
프로그램 수행시간 또는 실행시간 측정하는 법 프로그래밍 중 특정 구간에서 코드 실행 시간을 알아내야 하는 경우에 쓰이는 방법이다. C 또는 C++ 에서 프로그램 실행시간을 측정하는 방법은 크게 두 가지로 나뉘어 사용된다. 1. time 함수 이용하기 #include 헤더파일을 포함시키고 아래와 같이 사용한다. 이와 같은 방법은 ms 단위가 아닌 초(s) 단위로 측정된다. #include #include int main() { time_t start, end; double result; start = time(NULL); // 수행 시간 측정 시작 /* 수행시간 측정하고자 하는 코드 */ end = time(NULL); // 시간 측정 끝 result = (double)(end - start); // 결과..
2018.09.03
[C] printf 출력형식 %d %i %u %X %x %o %p %s %c %C %f %e %E %g %G
printf 출력 형식 %d %i %u %X %x %o %p %s %c %C %f %e %E %g %G type (형) : 인수의 형을 지정 d int값을 부호있는 10진수로 출력 i d와 같음 u int값을 부호없는 10진수로 출력 X int값을 부호없는 16진수로 출력 10~15은 'A'~'F'로 표시 x int값을 부호없는 16진수로 출력 10~15은 'a'~'f'로 표시 o int값을 부호없는 8진수로 출력 p 포인터값을 16진수로 출력 s 문자열 출력 c int값을 문자로 출력 C c와 같음 f double값을 소수로 출력 (예:12.566371) e double값을 지수로 출력 (예:1.256637e+001) E e와 같음 'e'가 'E'로 표시 (예:1.256637E+001)。 g 숫자값의 ..
2018.08.29
no image
[C] 포인터
C언어에서 포인터는 변수의 메모리 주소를 이용하여 함수를 넘나들며 값을 저장하기 위해 사용된다. 즉, 포인터는 값의 주소를 저장하기 위해 사용된다. 포인터 변수는 다음과 같이 * ( Asterisk, 애스터리스크)를 사용하여 선언된다. * 의 위치에 따른 차이는 없으며 모두 같은 뜻이다. int* numPtr; int * numPtr; int *numPtr; 포인터 변수를 선언했다면 아래와 같이 &로 변수의 주소를 구해서 포인터 변수에 저장한다. numPtr = # 즉, 포인터는 메모리의 특정 위치를 가리킬 때 사용한다. 아래 코드는 numPtr 이라는 포인터 변수가 int 형 변수 num 이 있는 공간을 가르키는 예제이다. numPtr이 가르키는 값을 변경할 경우 변수 num의 값도 당연히 변경..
2018.08.21
[C] 파일 목록 가져오기
파일 검색 함수는 특정한 조건에 맞는 파일을 검색한다. 예를 들어 a로 시작하고 확장자가 txt 인 모든 파일(*.txt)을 찾아 작업을 하고자 할 때 조건에 맞는 파일을 찾아야 한다. 파일을 검색하는 함수는 다음과 같다. long _findfirst( char *filespec, struct _finddata_t *fileinfo ); int _findnext( long handle, struct _finddata_t *fileinfo ); int _findclose( long handle ); findfirst 함수의 filespec 인수로 검색 식을 주면 조건에 맞는 첫번째 파일을 찾아 fileinfo 구조체에 검색된 파일의 정보를 채우고 검색 핸들을 리턴한다. 만약 조건에 맞지 않는다면 -1이 리..
2018.08.16