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

C++

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

[C++ NOTE] Inheritance

01. Inheritance Intro# 기본적인 개념1) Class relationship2) Code reuse3) Class Interface Consistency: abstract / interface, pure virtual function4) Dynamic function binding: virtual function, virtual table # 접근 권한 키워드 (private, public, protected)접근 권한 키워드는멤버 변수 및 함수에 작성하는 경우와상속 권한에 작성하는 경우가 있다  멤버 변수 및 함수에 작성하는 경우에 주의점은클래스 외부에서private 멤버 변수에 접근하려면 public 멤버 함수를 통해서 접근 가능하다는 것이다 상속 권한에 작성하는 경우에는 아래와 같은..

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

[C++ NOTE] OOP

01. OOP Intro # Multi paradigm C++은 Multi paradigm 언어이다 그 종류는 아래와 같다1) Procedural 2) Functional 3) OOP 4) generic # Class와 ObjectOOP에서 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중심의 언어로 만들어주는 4가지 1) Abs..

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++gccclang 02.Header file 선언부는 헤더 파일에구현부는 cpp파일에 넣어주는 것이 일반적이다 03.PreProcessor 전처리 과정에서는#include, #define, #ifdef, #pragma once와 같은#을 사용한 부분들을 복사 & 붙여 넣기를 통해 처리한다 여러 파일들이 생성되고서로 헤더파일을 참조하다 보면,전처리 과정에서 include 중복이 발생하는데 이를 막아주기 위해서는모든 헤더파일 위에 #pragma once를 작성하면 된다 C++에서는 최대한 define 문법을 사용하지 않는 것이 좋다defi..

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 실제로 메모리를 까보면 위 그림과 같이 저장된다스택이 쌓일 때는 &a 부터 밑에서 위로 쌓이게 되고메모리의 내부를 보았을 때는 &d가 먼저 보인다는 사실을 알 수 있다   02. Variable Types 1# Fixed width integer types 컴파일러와 아키텍처에 따라서 int, unsigned int와 같은 변수들은 최소 1..

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..