묻공러
'C++' 카테고리의 글 목록 (4 Page)

C++

C++/[노코프] C++

[C++ NOTE] OOP

01. OOP Intro # Multi paradigm C++은 Multi paradigm 언어이다 그 종류는 아래와 같다 1) Procedural 2) Functional 3) OOP 4) generic # Class와 Object OOP에서 Class는 Definition이고 이러한 Class를 통해 Object가 생성된다 아래의 예시에서는 Cat이 Class이고 kitty가 Object이다 class Cat { public: void speak(int name); void speak(float weight); private: int mAge; }; int main() { Cat kitty; kitty.speak(); Cat nabi; nabi.speak(); } # C++를 OOP중심의 언어로 만들..

C++/[노코프] C++

[C++ NOTE] Resource Move

01. Pointer vs. Reference 값, 포인터, 참조를 통해 전달하는 3가지 방식이 존재한다 값으로 전달을 하면 데이터를 전체 다 복사해야 한 경우가 발생한다 따라서, 포인터와 참조를 통해 전달하는 것이 효율적이다 둘의 차이는 내부적으로 없으며 참조의 경우는 const와 함께 작성해서 값을 변경하지 못하도록 막는 경우가 많다 void fooV(std::array a) { int b = a+1; }; void fooP(int * ap) { int b = *ap+1; }; void fooR(const int & a) { int b = a+1; a =100; }; 02. L-Value vs. R-Value # L-Value vs. R-Value R-Value는 한 번만 사용되고 더 이상 불려지거나..

C++/[노코프] C++

[C++ NOTE] Compile Process

01.Build Introduction # 과정 Pre Processor 과정부터 Linker 과정 까지를 Compile이라고 부른다 # 대표 컴파일러 종류 Visual C++ gcc clang 02.Header file 선언부는 헤더 파일에 구현부는 cpp파일에 넣어주는 것이 일반적이다 03.PreProcessor 전처리 과정에서는 #include, #define, #ifdef, #pragma once와 같은 #을 사용한 부분들을 복사 & 붙여 넣기를 통해 처리한다 여러 파일들이 생성되고 서로 헤더파일을 참조하다 보면, 전처리 과정에서 include 중복이 발생하는데 이를 막아주기 위해서는 모든 헤더파일 위에 #pragma once를 작성하면 된다 C++에서는 최대한 define 문법을 사용하지 않는 ..

C++/[노코프] C++

[C++ NOTE] Memory Structure

01. Variables in Memory # 스택 메모리와 변수 스택 메모리에 변수가 저장되는 방법은 스택 메모리의 가장 위 부분부터 데이터를 하나씩 쌓아가고 스택이 쌓이는 방향은 메모리의 주소가 감소하는 방향으로 쌓인다 # 예시 #include int main() { int a = 0; int b = 0; int c = a+b; double d = 2.5; std::cout

C++/[루키스] STL

[STL] algorithm

algorithm이란? STL 컨테이너는 자료구조(데이터를 저장하는 구조)를 의미하고 vector, list, deque, map, set 등이 있었다 STL 알고리즘은 데이터를 어떻게 사용할지에 대한 부분을 의미하고 대표적인 알고리즘은 아래와 같다 #include using namespace std; find(InputIterator first, InputIterator last, const T& value); find_if(InputIterator first, InputIterator last, UnaryPredicate pred); count(InputIterator first, InputIterator last, const T& value); count_if(InputIterator first, ..

C++/[루키스] STL

[STL] 사용 빈도 총정리

사용 구현(과제, 면접 등) vector O O list X O deque X X map O X set O X multimap X X multiset X X 직접 구현을 해보는 과제로 등장하는 것은 vector와 list이다 stl 사용 빈도를 정리하면, vector > map > set > deque, multimap, multiset (정말 가끔) > list (거의 사용 안 함)

C++/[루키스] STL

[STL] multimap, multiset

multimap과 multiset map과 set은 key의 중복이 허용되지 않는다 multimap과 multiset은 key의 중복이 허용되고 사용 빈도수가 다소 낮다 multimap의 간단한 사용법 map에 사용되는 insert, erase, find 등과 같은 대부분의 기능을 사용할 수 있다 다만, [] 문법을 사용할 수 없다 key가 중복되다 보니 어떤 key에 대한 value를 추가하거나 수정할지 명확하지 않을 수 있어서 막아둔 것이다 erase()의 경우는 해당 key를 들고있는 데이터를 모두 삭제하고 삭제된 데이터 개수를 반환한다 find()의 경우는 해당 key를 들고 있는 데이터 중 가장 첫 번째인 iterator만 반환한다 #include #include #include using na..

C++/[루키스] STL

[STL] set

//map이 뭐였지? https://motivelessstudy.tistory.com/260 set이란? map과 거의 비슷하지만 value가 없이 key만 사용하는 특징이 있다 굳이 key와 value의 두 가지를 저장할 필요가 없을 때 사용한다 map과 같이 균형이진트리(AVL)이기 때문에 데이터의 정렬에서는 시간이 걸리지만 탐색을 매우 빠르게 할 수 있다 간단 사용법 insert, erase, find처럼 map에서 지원하는 대부분의 기능들을 거의 비슷하게 지원해 준다 다만, value가 없어서 쌍(pair)을 사용할 필요가 없고 [] 문법은 지원해주지 않는다 간단 사용법 코드 예시 #include #include using namespace std; void main(void) { set s; /..

C++/[루키스] STL

[STL] map

연관 컨테이너(Associative Containers) 연관 컨테이너(Associative Containers)는 데이터를 저장할 때 각 요소의 키(key)와 값(value)을 쌍(pair)으로 저장한다 이러한 키와 값의 쌍은 서로 연관되어 있으며, 키를 사용하여 값을 빠르게 검색할 수 있다 대표적으로는 map, set 등이 있다 Sequence Contaioners vs. Associative Containers 시퀀스 컨테이너는 특정한 데이터를 찾고 탐색하는 경우에 모든 데이터를 순회해야 하기 때문에 시간이 오래 걸린다는 단점이 있다 반면에, 연관 컨테이너는 데이터의 삽입과 삭제를 하는 과정에서 정렬을 해야해서 조금 효율이 안 좋더라도 데이터를 찾는, 탐색하는 과정이 매우 빠르다는 장점이 있다 ma..

C++/[루키스] STL

[STL] deque

시퀀스 컨테이너(Sequence Container) 데이터가 삽입 순서대로 나열되는 형태로 vector, list, deque가 있다 deque(double-ended queue)란? 양쪽 끝에서의 삽입과 삭제를 효율적으로 지원하는 자료 구조이다 deque는 큐(queue)와 벡터(vector)의 결합체로, 큐와 마찬가지로 FIFO(First-In-First-Out)의 특성을 가지고 있으면서도 벡터처럼 임의의 위치에서의 접근이 가능합니다. deque는 블록(block)으로 구성되어 있으며, 각 블록은 일정 개수(일반적으로는 4개)의 요소를 저장하고 내부적으로 블록 간의 참조를 조정하여 삽입과 삭제를 효율적으로 수행할 수 있다 deque vs. vector deque는 capacity가 존재하지 않는다 데..