Language/C++ 그때그때 끄적끄적 (11) 썸네일형 리스트형 [C++]map 사용법 알고리즘 문제를 풀다보면 map사용이 많아지고 있습니다 때문에 한번 정리를 하고 가는게 좋을거라 생각되었습니다 map이란map은 key와value가 한쌍을 이룬 이진트리입니다 pair로 구성되어있기때문에 first가 key, second가 value에 해당됩니다또한 map은 Key값의 중복을 허용하지않습니다map의 내부구현은 삽입,검색,삭제가 불가능한 레드블랙트리로 구성되어있습니다시간복잡도는 이진트리이기때문에 O(logN)입니다 사용법map mymap;기본적인 선언입니다 key 값고 value 값으로 pair를 만들어 사용합니다 데이터 삽입mymap.insert({"dongsu", 11});이때 key값이 없다면 오류가 발생하고 중복된다면 해당코드는 수행되지않습니다map은 중복을 허용하지않습니다 데이.. [C++]Constexpr 1. Constexpr이란? constexpr키워드는 함수나 객체 앞에 붙여 쓸 수 있는 키워드로 constexpr은 컴파일 타임에 객체의 값이나 해당 함수의 리턴값을 알 수 있습니다 컴파일 시간에 값을 계산하기 때문에 프로그램을 더 빠르게 실행하고 메모리를 적게 사용하는 데 도움이 됩니다. 2. 특징 constexpr은 상수식이라고 합니다 때문에 const와 매우 유사하지만 constexpr은 const + 컴파일 타임에 값을 안다 라는 부분 때문에 차이점이 존재합니다 예시로 num 값은 상수로 a로 지정해주면 상수의 역할을 수행하게 됩니다 int a = 1; const int num = a; 하지만 constexpr은 이미 컴파일 시점에 a의 값을 모르기 때문에 오류가 발생하게 됩니다 int a = .. [C++] range based for(범위 기반 for문) 반복문을 작성할때는 습관처럼 for(int i = 0; i [C++] 문자열 나누기 spring split 다른언어에서는 split 기능이 제공되는 언어가 많습니다 하지만 C++에서는 구현해서 사용해야 하기때문에 문자열을 나누는 방법을 적어두려합니다 방법은 두가지로 find + substr 그리고 stringstream을 활용하는 방법 두가지를 준비했습니다 1. find + substr #include #include using namespace std; int main() { string temp = "Hello string split"; int prev = 0;// 이전 위치 int cur;// 현재 위치 cur = temp.find(' '); while (cur != string::npos) { string substring = temp.substr(prev, cur - prev); cout s) { /.. [C++] Iterator 반복자 자료구조는 자료구조마다 각기 다른 형태를 띄고있습니다 때문에 우리는 해당 자료구조의 컨테이너에 접근할때 접근 방법이 조금씩 다릅니다 저는 지금까지 Iterator를 사용하지 않고 주로 사용하는 Vector와 List는 간단하게 Index로 접근하여 컨테이너의 요소들에 접근하곤했습니다 하지만 그외의 컨테이너에 접근할때 우리는 해당 자료구조의 구조를 다 파악하지않아도 간편하게 사용하기 위한 방법으로 Iterator(반복자)를 사용할 수 있다는것을 알게 되었습니다 iterator 선언과 반복문을 통한 순회 vector vecInt; vecInt.push_back(10); vecInt.push_back(104); vecInt.push_back(1011); vector::iterator vecIter = vecI.. [C++]람다식이란 언리얼 엔진 공부를 하다 AddLambda라는 함수를 사용하게 되었습니다 C#에서 얼핏 공부했던 기억이 남아 다시 공부하고자 글을 써봅니다(C++기반으로 공부했습니다 C#과는 개념이 다를수 있습니다) 람다식이란 정식적으로 함수를 선언하고 사용하는 방식이 아닌 필요한 지점에서 함수를 만들어 사용하는 방식입니다 이과정중 접근제한자, 반환형, 식별자들이 생략되는 익명함수이며, 일회용 함수입니다 이렇다면 이러한 람다식은 왜쓰이는건가 단 한번만쓰이는 함수는 굳이 정의하지않고 필요한 부분에서 람다로 사용함으로써 재활용을 못하게 하고, 코드를 쭉쭉읽일수 있게 한다는 장점이있습니다 이러한 장점들이있지만 사용이 편리하게 하다보면 그 편리함이 오히려 단점이 되는데요 람다 같은경우는 익명 함수이기때문에 디버깅시 어떤 람다에.. [C++]Struct 와 Class Struct와 Class는 매우 유사한 형태를 띠고 있습니다 Struct는 C에서부터 존재해왔던 사용자 정의 자료구조로 여러 데이터를 하나로 묶어 새로운 자료형을 만들 때 사용하는 키워드입니다 Class는 객체지향 언어에서 생겨난 개념으로 C의 Struct의 기능들 이외에 함수를 정의하는 기능 등이 추가되어있습니다 하지만 Struct도 C++로 넘어오며 함수를 정의하는 기능이나 접근 지정자 등이 추가되며 사용자들로 하여금 Struct와 Class의 사용처의 혼동을 야기합니다 또한 내부적으로 가도 Struct와 Class는 매우 비슷한 형태를 된다고 합니다 때문에 Struct와 Class의 사용처에 대한 문제는 코딩 스탠더드로 해결해야 합니다 간단하게 Struct는 데이터만 가지고 있다고 생각하면 편합니다.. [C++]typedef typedef는 type와 define을 합친 예약어로 말 그대로 자료형을 재정의 하는 예약어입니다 #include"iostream" using namespace std; int main() { typedef int newint; newint a; a = 1; cout 이전 1 2 다음