목록C++/문법 및 메소드(STL) (9)
나만의 작은 도서관
열거형이란?열거형(Enumerations)은 열거자(enumerator)라 불리는 정수 상수 집합으로 구성된 사용자 정의 형식을 말한다.enum 키워드C언어에서 넘어온 열거형 키워드이다. 사용법은 아래와 같다.enum [identifier] [: type] {enum-list}// identifier: 열거형에 지정된 형식 이름 ⇒ 변수 이름// type: 열거자(enumerator)의 타입. 모든 열거자는 해당 타입으로 표현된다. 모든 “정수” 계열 타입이 가능하다.// enum-list: 열거자가 쉼표로 구분된 리스트. 범위에 있는 모든 열거자의 이름은 고유해야 하지만, 값은 중복될 수 있다. // 지역 변수와 같이 선언된 범위 내에서만 살아있다.// ex.enum A : int {ZERO..
배경여기저기 코드를 보다 보면 class의 전유물이라고 생각했던 기능들이 struct에서 멀쩡히 돌아가는 경우를 종종 보았다. 이것도 돼? 저것도 돼? 하며 놀란적이 한두 번이 아닌데, 이번 시간에는 struct가 어디까지 가능한지 알아보도록 한다. C++에서 struct와 class는 맥락상 동일하다.매우 충격적인 결과지만 사실이다. 유일한 차이점으로 기본 접근 지정자(Access specifier)가 struct은 public, class는 private이다. 이거 말곤 전부 똑같다. (어셈블리 언어로 변환해서 봐도 완전히 동일한 구조를 가지고 있다.) 아래 코드에서의 MyStruct와 MyClass는 기본 접근 지정자만 다를뿐 완전히 같다.#include using namespace std;stru..

static이 붙은 변수, 정적 변수변수는 자신이 정의된 범위(중괄호로 표현됨)를 벗어나면 파괴된다. 즉, 변수가 선언된 중괄호를 벗어나는 순간, 변수의 생명 주기가 끝나면서 사라지게 된다.하지만 변수가 static이 붙은 정적 변수라면 자신이 선언된 범위를 벗어날 때 사라지는 것이 아닌 프로그램이 종료될 때 사라진다. 아래 코드를 통해 정적 변수가 범위를 벗어나도 값이 유지되어 함수를 호출할 때마다 증가하는 것을 볼 수 있다.+) 참고로 함수 내에 정적 변수가 존재할 경우, 정적 변수의 초기화는 함수가 처음 호출될때 단 한 번만 이루어진다.#include using namespace std;void func1(){ static int n = 0; // func1() 최초 호출 시에만 실행(초기화 ..

typedef 키워드typedef 키워드는 C언어에서 넘어온 키워드이며, 특정 타입의 별칭을 정의하는 키워드이다. 복잡한 타입을 하나의 이름으로 간결하게 표현하고 싶을 때나 같은 타입이라도 이름을 달리 부여하여 코드의 가독성을 높일 때 사용한다. typedef 키워드의 사용법은 다음과 같다. typedef 선언부// typedef 별칭을_지어줄_타입 별칭_이름// 복잡한 타입: [, , , ...]typedef std::vector> pairlist_t;// 같은 타입, 다른 이름도 가능하다.typedef std::vector numlist_t;typedef std::vector numlist_t2; typedef 사용int main(){ pairlist_t pairlist; // std::vec..

네임스페이스란?네임스페이스(namespace)는 한국말로 "이름 공간"이며, 단어에서 알 수 있듯 사용한 객체(함수나 변수와 같은)가 소속된 공간의 이름을 말한다. 코드의 양이 많아지거나 많은 사람들이 협력하는 프로젝트인 경우, 같은 이름으로 선언한 함수들이 발생할 수 있는데, 이때 네임스페이스를 이용하여 같은 이름의 함수들을 구분할 수 있다. 네임스페이스의 사용하는 방법은 아래 코드와 같다. 네임스페이스 선언부// namespace 네임스페이스_이름{ // 코드1// 코드2// ...// }namespace myNamespace{ int x = 123; void print(){ std::cout 네임스페이스에 정의된 객체 사용법// 네임스페이스_이름::함수_이름int main(..
입력으로 주어지는 한자리 숫자들이 붙어있어 하나의 숫자로 인식되는 경우나, 숫자로 된 문자열을 계산해야 하는 경우처럼 문자열을 숫자로, 숫자를 문자열로 변환(casting) 해야하는 상황이 종종 발생한다. 이럴 때 유용하게 사용할 수 있는 함수가 stoi(), to_string()이다. stoi() // stoi(바꾸고자 하는 문자열) inline int stoi(const string& __str, size_t* __idx = 0, int __base = 10) { return __gnu_cxx::__stoa(&std::strtol, "stoi", __str.c_str(), __idx, __base); } String TO Integer의 약자로, 바꾸고자 하는 문자열을 int 자료형으로 변환한다. 해..