본문 바로가기

C++13

[C++] - vector 사용법 정리 (STL) vector란? vector란 많이 쓰이는 STL 자료구조 중 하나로, 동적으로 메모리가 할당된 배열이다. 사용자가 직접 메모리를 동적 할당한 배열 (int* arr = new int[n])과는 달리 요소 수가 증가하거나 감소하면 메모리가 자동으로 늘어나고 줄어들어 메모리를 매우 효율적으로 관리할 수 있다. 또한 일반 배열처럼, 인덱스를 이용하여 모든 위치에 접근이 가능하다. 1. 헤더파일 #include using namespace std; vector를 사용하기 위해서는 헤더파일을 include시켜주어야 한다. STL vector는 std namespace에 있기 때문에 cout, cin을 사용할 때와 같이 using namespace std;를 추가해주면 편리하다. 2. vector 선언하기 1) .. 2024. 1. 6.
[C++] - sort()함수 사용법 정리(STL) 이전에 STL에 대해 설명했던 포스팅에서 알고리즘(algorithm)에 대하여 간단히 알아보았다. 오늘은 알고리즘의 템플릿 함수들 중, 정렬 시 유용하게 사용할 수 있는 sort() 함수에 대하여 알아보자. 자료구조와 알고리즘을 배우기 시작하면 선택 정렬, 삽입 정렬, 퀵 정렬, 병합 정렬, 버블 정렬, 힙 정렬 등등 다양한 정렬 방법에 대하여 공부하게 된다. 하지만 C++의 STL에는 이미 간단한 코드 몇줄로 정렬을 수행할 수 있는 라이브러리가 구현되어 있다. 따라서 복잡하게 정렬 알고리즘을 구현할 필요가 없다. (참고로 sort()의 시간 복잡도는 nlogn 이다.) sort() 사용법 sort함수는 배열의 원소들을 정렬할 때 사용하며, 기본적으로 오름차순으로 정렬한다. sort()함수를 사용하기 위.. 2024. 1. 2.
[C++] - map 사용법 정리 (STL) map이란? map은 많이 쓰이는 STL 자료구조 중 하나로, (key, value) 쌍을 저장할 수 있는 클래스이다. key는 중복된 값을 가질 수 없다는 특징이 있으며, 원소가 삽입될때 자동으로 오름차순 정렬되어 검색, 삽입, 삭제에 유리하다. (O(logn)을 보장한다.) 1. 헤더파일 C++에서 map을 사용하기 위해서는 헤더파일을 include해줘야한다. 코드 상단에 아래와 같이 한 줄만 적어주면 된다. #include 2. map 선언하기 fruit 이라는 이름을 가지고 있고, key값은 string 자료형, value 값은 int 자료형을 가진 map을 선언하는 코드이다. map fruit; 3. 원소 삽입 원소를 삽입할 때에는 insert() 함수를 이용한다. fruit.insert({ ".. 2023. 12. 30.
[C++] - STL(표준 템플릿 라이브러리)에 대하여 STL이란? STL이란, C++에서 제공하는 표준 템플릿 라이브러리 (Standard Template Library)이다. 간단히 말해, 다양한 자료구조와 알고리즘들을 템플릿으로 제공하는 라이브러리이다. STL에 포함되는 클래스와 함수들은 크게 3가지로 분류할 수 있는데, 컨테이너(container), 반복자(iterator), 알고리즘(algorithm)이다. 컨테이너 (container) 자료구조를 구현해 놓은 클래스이다. 일반적으로 많이 알려진 리스트, 큐, 스택을 포함하여 다양한 자료구조들이 구현되어 있다. 컨테이너는 크게 3가지로 분류할 수 있다. 순차 컨테이너 (Sequence Container) 연속적인 메모리 공간에 순서대로 값을 저장한다. vector, deque, list 등이 있다. .. 2023. 12. 28.
[C/C++] - 입력 개수를 모를때 (EOF까지 입력받기) 1. EOF란? EOF란 End - Of -File을 뜻하는 말로, 파일의 끝에 도달했음을 의미한다. 파일의 끝인 경우에는 TRUE, 파일의 끝이 아닌 경우에는 FALSE를 반환한다. 주의! 마지막 입력에서 판단하는 것이 아니다. 마지막 입력 다음, 더 이상 읽을 데이터가 없을 경우에 EOF가 TRUE를 반환한다. 2. EOF인지 판단하는 방법 ① scanf 가 입력받은 인자의 갯수를 이용하기 scanf는 입력받은 인자의 개수를 반환하는 특성이 있다. 예를 들어, scanf(%d, %d, &a, &b); 를 통해 2개의 정수 a와 b를 정상적으로 입력받았다면, scanf의 값은 2가 된다. int a, b; //scanf를 통하여 2개의 인자 a와 b가 정상적으로 입력되었다면 while(scanf("%d.. 2023. 12. 13.
[C++] - namespace와 using 사용법 (std:: 생략하기) 1. namespace란? namespace란, 클래스, 상수, 변수, 함수, 구조체 등의 이름이 중복되어 컴파일 시 오류가 생기는 것을 방지하기 위해 도입된 개념이다. (예를 들어 하나의 프로그램을 여러 개발자가 개발하는 경우, A 개발자가 덧셈 기능을 수행하는 number()라는 이름의 함수를 구현했다고 하자. 그리고 B 개발자는 같은 이름의 number() 함수이지만, 뺄셈 기능을 수행하도록 작성하였다고 하자. A 개발자와 B 개발자가 작성한 소스를 합쳐서 컴파일하거나 두 개발자의 소스를 링크시킬 경우 number 함수가 어떤 기능을 수행하는지 알 수 없어 오류가 발생하게 된다. ) namespace abc{//abc라는 이름공간 생성 ... } namespace를 생성하는 방법은 위와 같다. 생성.. 2023. 12. 12.