Programming/C | C++

Programming/C | C++

[C++] vector 최댓값, 최솟값, 인덱스 구하기

vector 컨테이너에서 최대값, 최소값을 구할 경우 for문을 작성할 수도 있지만, 복잡하기 때문에 algorithm 라이브러리의 있는 max_element를 사용하여 한줄로도 간단하게 최대값을 구할 수 있다. 또한, max_element를 사용하면 최대값의 인덱스 값을 구할 수 있으며, 최소값을 구하기 위해서는 min_element를 사용한다. max_element의 결과로 최대값을 가리키는 반복자를 반환하기 때문에 이를 * 연산자를 사용하면 최대값을 구할 수 있다. 또한, vector는 일련의 반복자로 구성되어 있으므로 최대값을 가리키는 반복자를 맨 처음을 가리키는 v.begin()만큼 빼준다면 인덱스 값을 구할 수 있다. vector와 유사한 구조인 deque에서도 동일하게 이용할 수 있다. #i..

Programming/C | C++

[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

Programming/C | C++

[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이면 프로그램 중단 ..

Programming/C | C++

[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..

Programming/C | C++

[C++] 조건부 연산자

조건부 연산자 사용법 expression ? expression : expression 조건 연산자(? :)는 피연산자 3개를 사용하는 삼항 연산자이다. 조건 연산자는 다음과 같이 사용된다. - 첫번째 피연산자는 암시적으로 bool 자료형으로 변환된다. - 첫번째 피연산자가 true(1) 이면 두 번째 피연산자가 계산된다. - 첫번째 피연산자가 false(0) 이면 세 번째 피연산자가 계산된다. 조건 연산자의 결과는 두 번째 또는 세 번째 피연산자가 계산된 결과이다. 마지막 피연산자 2개 중 1개만 조건식에서 계산된다. 조건식은 오른쪽과 왼쪽이 연결되어있으며, 첫번째 피연산자는 정수 계열 또는 포인터 형식이어야 한다. 조건부 연산자 예제 // expre_Expressions_with_the_Conditi..

Programming/C | C++

[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..

Programming/C | C++

[C++] 반복자 (Iterator)

C++ 반복자(Iterator) C++ 라이브러리는 반복자를 제공하는데 이것을 사용하면 라이브러리의 방식대로 자료구조를 액세스 할 수 있다. 따라서 라이브러리가 효과적으로 동작한다는 것을 보장 할 수 있다는 장점이 있다. 즉, 포인터와 상당히 비슷하며, 컨테이너에 저장되어 있는 원소들을 참조할 때 사용한다. 추상적으로 말하자면, 반복자란 컨테이너에 저장되어 있는 모든 원소들을 전체적으로 훑어 나갈 때 사용하는, 일종의 포인터와 비슷한 객체라고 할 수 있다. 알고리즘 마다 각기 다른 방식으로 컨테이너를 훑어가기 때문에, 반복자에도 여러가지 종류가 있게 된다. 반복자의 성질 - 컨테이너와 컨테이너 안의 있는 요소를 구별 - 요소의 값 확인 - 컨테이너 안에 있는 요소들 간에 이동할 수 있는 연산 제공 - 컨..

Programming/C | C++

[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 -..

Programming/C | C++

[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); // 결과..

Programming/C | C++

[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 숫자값의 ..

Programming/C | C++

[C] 포인터

C언어에서 포인터는 변수의 메모리 주소를 이용하여 함수를 넘나들며 값을 저장하기 위해 사용된다. 즉, 포인터는 값의 주소를 저장하기 위해 사용된다. 포인터 변수는 다음과 같이 * ( Asterisk, 애스터리스크)를 사용하여 선언된다. * 의 위치에 따른 차이는 없으며 모두 같은 뜻이다. int* numPtr; int * numPtr; int *numPtr; 포인터 변수를 선언했다면 아래와 같이 &로 변수의 주소를 구해서 포인터 변수에 저장한다. numPtr = # 즉, 포인터는 메모리의 특정 위치를 가리킬 때 사용한다. 아래 코드는 numPtr 이라는 포인터 변수가 int 형 변수 num 이 있는 공간을 가르키는 예제이다. numPtr이 가르키는 값을 변경할 경우 변수 num의 값도 당연히 변경..

Programming/C | C++

[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이 리..

Programming/C | C++

[C++] 전처리문의 종류

전처리문 : 실질적인 컴파일 이전에 미리 처리되는 문장을 말하며, 선행 처리기라고도 한다. 따라서 컴파일러는 사용자가 작성한 코드를 컴파일 하기 전에 전처리문에서 정의해놓은 작업을 먼저 수행하게 된다. 파일 처리를 위한 전처리문 : #include형태 처리를 위한 전처리문 : #define, #undef조건 처리를 위한 전처리문 : #if, #ifdef, #else, #elif, #endif에러 처리를 위한 전처리문 : #error디버깅을 위한 전처리문 : #line컴파일 옵션 처리를 위한 전처리문 : #pragma 조건 처리를 위한 전처리문은 어떤 조건에 대한 검사를 하고, 그 결과를 참(0이 아닌 값) 또는 거짓(0)으로 돌ㄹ준다. #if : ~이 참 이라면#ifdef : ~이 정의되어 있다면#els..

Programming/C | C++

[C++] STL 정리

STL(Standard Template Library) : C++의 템플릿을 사용하여 표준으로 정리된 라이브러리 - 반복자 / 컨테이너 / 알고리즘 함수객체 등의 라이브러리로 구성 컨테이너(Container) : 컨테이너란 기본 자료형과 유저가 정의한 자료형을 담는 일종의 자료구조 1. 시퀀스 컨테이너 일반적인 자료구조와 동일한 형태 (vector / list / string / deque ...) 자료를 입력한 순서대로 저장하기 때문에 저장, 검색, 알고리즘에 불리함 적은 양의 자료나 검색 속도가 중요하지 않은 경우에 사용 2. 연관 컨테이너 일정한 규칙에 따라 자료를 조직화하여 저장 (set / map / multiset / multimap ...) 자료를 정렬하여 저장하기 때문에 검색에 유리 많은 ..

Programming/C | C++

[C] 비주얼스튜디오2013 scanf 오류 해결법

평소와 다를 것 없이 비주얼 스튜디오 2013에서 scanf 를 쓰려고 하면 Error1error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.c:\users\kgu\documents\visual studio 2013\projects\project3\project3\statistic.cpp101Project3 라는 오류가 나면서 컴파일이 되지 않는다. 그렇기 때문에 비주얼 스튜디오 2013 버전에서는 그동안 써왔던 scanf를 scanf_s로 바꿔주..

꾸준희
'Programming/C | C++' 카테고리의 글 목록