반응형

언어 자료구조 알고리즘 1251

[자료구조와 STL] 4. vector 인덱스 연산을 통해 사용하기

2. 1 인덱스 연산을 통해 사용하기 vector에서 인덱스 연산을 사용하면 보관된 요소의 개수에 상관없이 인덱스 연산 한 번으로 원하는 요소에 접근할 수 있습니다. 이러한 장점을 사용하기 위해서는 보관할 요소의 특정 키를 특정 알고리즘을 통해 보관하거나 보관된 위치를 구할 수 있어야 할 것입니다. 보관할 요소의 특정 키를 특정 알고리즘을 통해 보관하거나 보관된 인덱스를 구할 수 있으면 vector를 인덱스 연산을 통해 사용하면 효과적입니다. 그리고 특정 키를 입력 인자로 받았을 때 알고리즘을 통해 얻어온 인덱스의 최대값이 결정될 수 있으면 보다 효과적입니다. 인덱스 연산을 통해 vector를 사용하면 vector 생성 시에 저장소의 크기를 최대값으로 하고 모든 원소를 초기값으로 설정해야 합니다. 사실 ..

[자료구조와 STL] 3. vector (배열)

2. vector (배열) STL에서 제공하는 컨테이너 중에서 C++언어에서 제공하는 배열과 가장 흡사한 컨테이너는 vector입니다. vector 내부에는 원소 형식들을 연속적인 프로그램 메모리에 보관할 수 있는 물리적 공간을 가지고 있기 때문에 변수명과 인덱스 연산자를 통해 원하는 원소를 찾을 수 있습니다. vector arr(5);for(int index = 0; index < 5; ++index){ arr[index] = index+1;} C++언어에서 제공되는 배열은 유효하지 않은 인덱스를 통해 접근하였을 때 프로그램이 터지지 않는 경우도 발생합니다. 이러면 개발 단계에서 빠르게 논리적 버그를 찾지 못하여 비용이 커지게 됩니다. 하지만 STL에서 제공하는 vector에서는 보관된 원소의 개수를 ..

[자료구조와 STL] 2. 공통적으로 사용하는 것들

1.2 이 책에서 공통적으로 사용하는 것들 앞으로 이 책에서 사용할 클래스 ehglobal을 소개를 하겠습니다. ehglobal 클래스에는 이 책에 소개되는 전반적인 예제 프로그램에서 공통으로 사용할 만한 함수들을 정적 멤버 메서드로 캡슐화되어 있습니다. 이 책에 공통으로 사용 가능한 것들에 대한 정의에서는 형식 명과 메서드 명 모두 소문자만을 사용하고 있습니다. 먼저, 콘솔 화면을 지우는 메서드로 clrscr을 제공할 것입니다. static void clrscr(); 사실, 메서드 내에서 하는 작업은 단순히 친 명령을 system 함수를 이용하는 것밖에 없습니다. 여기에서는 자주 사용하는 함수들을 ehglobal 클래스의 정적 멤버 메서드로 캡슐화하여 사용자 편의를 제공하는 것 외에는 특별한 의미가 없..

[자료구조와 STL] 1. STL 소개

1. 들어가기에 앞서 1.1 STL 소개 STL(Standard Template Library, 표준 템플릿 라이브러리)은 개체들을 보관하기 위한 다양한 컨테이너와 이들 컨테이너에 보관된 개체들을 반복적으로 순회할 수 있게 해 주는 반복자, 사용자에서 정의한 코드를 입력 인자로 전달받아 처리할 수 있게 추상화한 함수 개체, 다양한 문제 해결 방법이 구현된 함수들로 구성된 알고리즘 등으로 구성되어 있습니다. 이 책에서는 STL에 제공되는 일부 컨테이너와 반복자, 함수 개체 및 알고리즘을 소개하는 동시에 기본적인 자료구조에 대한 개념과 구현 방법을 전달할 것입니다. 자료구조를 다루는 수많은 책에서는 한정된 형식의 자료를 보관하는 형태의 예를 들고 있는 것과는 달리 이 책에서는 STL에 제공하는 것처럼 설계와..

[C언어] 100. main함수 매개변수

100. main 함수 매개변수 이번에는 main 함수 매개 변수를 사용하는 방법을 살펴보아요. main 함수는 프로그램 진입점 함수로 프로그램의 개발자가 작성한 코드 중에서 제일 먼저 수행하죠. main 함수는 시작하면서 인자와 환경 변수를 받아 사용할 수 있고 종료 결과를 반환할 수 있어요. int main(int argc,char **argv, char **env); main 함수는 전달한 인자와 환경변수를 선택적으로 사용할 수 있어서 개발자는 다양한 형태의 원형을 갖는 main 함수 중에 한 가지 형태로 정의하여 사용할 수 있어요. int main(int argc, char **argv, char **env); void main(int argc, char **argv, char **env); in..

[C언어] 98. 파일 입출력 ftell, fseek

98. 파일 입출력 - ftell, fseek 이 외에도 입출력 작업의 위치를 확인하는 ftell 함수와 작업 위치를 변경하는 fseek 함수 등이 있어요. long ftell(FILE * fp); int fseek(FILE * fp, long offset, int origin); ftell 함수는 입력 인자로 입출력 작업 FILE *를 전달하면 작업 위치를 반환하는 간단한 함수예요. fseek함수는 FILE *외에도 세번째 인자로 기준이 되는 매크로 상수와 두번째 인자로 기준에서의 상대적 위치(음수도 가능)를 전달하여 작업 위치를 설정할 수 있어요. 세번째 인자로 들어가는 인자는 시작 위치를 의미하는 매크로 상수 SEEK_SET, 현재 위치를 의미하는 SEEK_CUR, 끝을 의미하는 SEEK_END가 ..

[C언어] 97. 바이너리로 파일 입출력

97. 바이너리로 파일 입출력 이번에는 메모리를 덤프하는 입출력 함수를 살펴볼게요. size_t fread(void * buf, size_t element_size, size_t count, FILE * fp); size_t fwrite(void * buf, size_t element_size, size_t count, FILE * fp); 메모리를 덤프하는 입출력 함수는 내용을 그대로 파일 입출력하는 함수들이예요. 메모리 덤프하는 입출력 함수는 fread와 fwirte 함수가 있어요. 두 함수는 입출력 방향이 메모리에서 파일스트림과 파일스트림에서 메모리라는 점이 다를 뿐이며 함수 원형이 같아요. 두 함수의 입력 인자는 data를 읽거나 쓸 buf의 주소, 요소 크기, 요소 개수, 파일 스트림이예요. 그..

[C언어] 96. ASCII 문자로 파일 입출력

96. ASCII 문자로 파일 입출력 표준 입출력 함수는 크게 ASCII 문자로 입출력하는 함수들과 메모리를 덤프하는 입출력 함수가 있어요. 이제까지 계속 사용했던 scanf, printf 함수 등은 ASCII 문자로 입출력하는 함수들이예요. ASCII 문자로 입출력할 때 사용하는 주요 함수를 알아봅시다. int fscanf(FILE * fp, const char * format, ...); int fscanf_s(FILE * fp ,const char *format,...); int fgetc(FILE * fp); char * fgets(char * buf, int max_count, FILE * fp); int fprintf(FILE * fp, const char * format, ...); int ..

[C언어] 95. 파일 입출력 - fopen,fclose

95. 파일 입출력 - fopen, fclose 이번에는 표준 입출력 라이브러리 사용 방법을 살펴볼게요. C언어에서는 파일 입출력을 할 수 있게 표준 입출력 라이브러리와 콘솔 입출력 라이브러리 등을 제공하고 있어요. 개발자가 O/S에서 제공하는 시스템 호출을 사용해서 파일 I/O 작업을 할 수도 있어요. 하지만 시스템 호출은 섬세한 제어가 필요하죠. 파일 입출력 라이브러리를 사용하는 것으로도 대부분 처리가 가능해요. 파일 입출력 작업을 하려면 먼저 작업할 파일을 열고 마친 후에는 닫아야겠죠. 표준 입출력 라이브러리에서는 원하는 파일을 열 때 사용하는 여러가지 함수를 제공하는데 대표적인 함수가 fopen이예요. FILE * fopen(const char * path, const char *mode); er..

반응형