본문 바로가기
Develop/Cpp

[C++] STL cmath, map

by Tarra 2022. 6. 29.

 

 


개인 공부 후 자료를 남겨놓기 위한 목적이므로,
생략되거나 오류가 있을 수 있음을 알립니다.

 

 

 

최근에 알고리즘을 풀며 사용했던 STL인 cmath와 map에 대해 

대표적인 몇가지 메소드를 알아보도록 하자.

 

 

 

cmath


cmath는 C++ STL에 들어있는 라이브러리중 하나로, 수학 연산에 관련된 메소드들을 많이 가지고 있다.

 

그 중 자주 사용하게 될 메소드 몇가지를 알아보도록 하자.

 

가장 기본적으로는 코드의 헤더부분에 <cmath>를 삽입해주어야 사용이 가능하다.

 

 

 

 

min, max

최대, 최소를 계산해주는 메소드이다.

 

다음과 같이 사용하며, 인자로 들어가는 x와 y중 최대, 최소값을 반환해준다.

 

 

 

 

 

ceil, floor

순서대로 올림, 내림에 관한 메소드이다.

 

반환되는 값은 double형으로 반환하며, 해당 x값을 정수로 올림, 내림한다.

 

 

 

 

 

 

abs, fabs

abs, fabs 모두 절댓값을 반환해주는 메소드이다.

 

두 메소드는 같은 메소드이지만, C언어와의 호환성 때문에 남겨둔 것으로 보이며,

 

우리는 이 둘 중 abs를 주로 이용하게 될 것이다.

 

 

 

 

 

 

pow, sqrt

pow는 제곱을 리턴하는 함수이다.

 

다음과 같이 사용하며, 이와 반대인 제곱근을 의미하는 메소드가 sqrt가 되겠다.

 

 

 

 

 

 

 

 

 

 

map


이 포스팅의 핵심인 map 라이브러리이다.

 

해당 라이브러리는 굳이 비교하자면 python의 딕셔너리 형태와 유사하며

 

자료구조를 key값과 value 의 형태로 저장할 수 있다는 장점이 있다.

 

해당 라이브러리의 헤더는 map을 사용한다.

 

 

 

 

기본 사용법

map 자료형을 사용하기 위해선 일단 선언을 해주어야 한다.

 

변수의 선언은 `map<key, value> ` 의 형태로 선언한다.

 

이해하기 쉽게, key로 string, value로 int를 가지는 변수 v를 선언해보도록 하자.

 

 

 

key :string, value :int를 가지는 변수 v

 

 

 

데이터 삽입

 

이제 해당 변수 v에 여러 값들을 넣어보도록 할텐데, 넣는 방법에는 여러가지가 있지만,

 

두가지만 알아보도록 하자. 

 

다음 예시에서는 변수 v에 key값으로 'a', value로 3을 가지는 데이터 하나와,

 

key값으로 'b', value 값으로 7을 가지는 데이터를 두가지 방법으로 넣어보겠다.

 

 

 

데이터를 넣는 방법은 여러가지가 있지만, 나는 첫번째 방법이 제일 간단해보이므로 자주 사용할 것 같다.

 

 

 

 

데이터 삭제

데이터를 추가했다면 이제는 삭제를 해보도록 하자.

 

데이터의 삭제는 erase를 사용하며, 해당 키값에 해당하는 데이터를 삭제한다.

 

키값을 바탕으로 데이터를 찾아 삭제한다는 것이 중요하다.

 

 

 

+ 위와 같이 키값을 입력하여 삭제를 할 수 있고, 

 

v.erase(v.begin() + 2); 와 같이 반복자를 이용하여 삭제도 가능하다.

 

 

 

 

map 초기화

자주 있는 일은 아니겠지만, 경우에 따라서 해당 map을 완전히 초기화시킬 일도 있을 것이다.

 

이 경우 clear를 사용한다.

 

 

 

 

데이터 조회

map 자료구조를 만들고 데이터를 다루다보면

 

특정 데이터가 안에 존재하는지, 어떤 value를 가지고 있는지 알아봐야 하는 경우가 생긴다.

 

이 때 사용하는 몇가지 방법을 알아보도록 하자.

 

 

 

 

특정 데이터의 유무 찾기

find를 이용하여 해당 데이터가 존재하는지 알아볼 수 있다.

 

find의 경우에는 마치 for문을 돌리듯이 데이터를 모두 훑기 때문에,

 

find가 반환하는 값이 end반복자라면, 데이터의 끝까지 돌았을 경우에도 해당 데이터가 없다는 뜻이 되므로,

 

다음의 예시와 같이 코드를 짤 수 있다.

 

 

 

 

데이터 접근

이번에는 특정 키값을 찾고, 그 키값의 value에 접근하는 방법에 대해 알아보자,

 

보통의 방법처럼 for을 이용하여 해당 key을 찾고, 그 key값이 맞다면 value를 가져오는 방법으로 코드를 짤 수 있다.

 

 

 

 

+ 이외에도 map의 크기를 반환하는 size() 라던지,

 

내부에 자료가 있는지 없는지를 파악하는 empty() 등 기본적인 메소드가 내장되어 있다.

 

 

 

 

'Develop > Cpp' 카테고리의 다른 글

[C++] 가상함수테이블(VTable)과 virtual  (0) 2023.02.28
[C++] sort (정렬)  (0) 2022.06.25
[C++] STL vector  (0) 2022.06.23
[C++] String 클래스  (0) 2022.06.22
[Cpp] Direct 배열  (0) 2022.06.22