C

· C/C++
마법의 키워드 template 를 알아보자 이놈이 있기 전까지 우린 항상 int arr[n] type을 지정했다 그리고 매번 STL의 vector, list등을 사용할 때 vector 에서 이 꺽새 안에 들어가는 datatype을 왜 명시하는 것이었나? [구문] template class Class_Name { } 이 마법의 구문을 클래스 상단에 명시하면 클래스 생성시 어떤 타입이든 명시한 typename으로 대치시켜준다. (컴파일러단에서 수행) 따라서 string, int, etc... 어떤 타입이든 담을 수 있었던 것이다. 템플릿(template)이란 단어가 의미하는 '틀', 어떤 데이터 타입이든 담아낼 수 있는 class 틀을 의미한다. 배열 내의 최대 값을 반환하는 템플릿 함수를 만들어봤다. [R..
· C/C++
흔히 IDE에서 free 할때나 포인터에 NULL 값을 넣을 때 자주 쓰는 'NULL' NULL의 원형을 살펴보면 다음과같다. 이놈은 2가지 경우에서 흔히 문제가 발생. any_function(NULL) switch _ case 에서 switch(NULL) 1번의 경우 argument를 int 0으로 인식하고 2번의 경우도 switch(0) 을 받게된다. NULL이 0으로 define 되어있는 것이 그 원인이다. (ambiguous) 이를 해결하기 위해 나온 C++11 의 표준 'nullptr' 포인터 변수에 nullptr을 대입하자. any_ptr = nullptr => left_value(any_ptr)가 포인터 변수라는 것을 알 수 있어 가독성 증가 => switch case & argument 에..
· C/C++
auto 는 컴파일러가 'Inferred Data type"으로 "추론할 수 있는 데이터 타입"으로 자동 형 변환해주는 것이다. std 의 vector같은 컨테이너를 사용할 때 다음과 같은 구문을 흔히 봐왔다. std::vector vec std::vector::iterator itr; for(itr = vec.begin(); itr != vec.end(); ++itr){ } oh.. shit for loop 한번 쓰겠다고 iterator를 이렇게..? auto itr = vec.begin() ; itr != vec.end(); ++itr 이것만으로 쌉거눙; 자동으로 해당 container 데이터 타입에 맞는 pointer를 반환해줌. (auto Casting) [Range based for loop] ..
· C/C++
STL (Standard Template Libaray) 가장 기본적인 data structure [정의] 길이(크기)가 가변적인 array list ♣ Vector의 Capacity (할당된 메모리 공간의 크기)를 넘어서는 시점에서 자동으로 메모리 재할당 및 기존 원소값들의 복사가 발생하는 원리로 크기의 가변성을 보장한다. [Time Complexity Analysis] 임의의 위치 접근 (index 사용) : O(1) 맨 뒤 원소 삽입/삭제 : amortized O(1) 임의의 위치 원소 삽입/삭제: O( N + M ) // N: 삽입될 원소 갯수, M: 해당 원소 인덱스 뒤의 원소 갯수 (한칸 씩 뒤로 밀어줘야 함) 분류 임의의 위치 접근 맨 뒤 원소 삽입/삭제 임의의 위치 원소 삽입/삭제 Func..
· C
[배경] Dev-C++ 를 사용하다가 느낀 단점. 2015년 4월까지 릴리즈 이후로는 업데이트가 없음. 컴파일 이전단계에서 auto-syntax, auto-complete 가 미흡하단점 Debug attach 수동으로 변수명을 일일히 입력해줘야 한다는점 (혹은 text-editor 창에서 커서를 올려야함) 새로운 Realease가 지속적으로 출시되는 Open source based IDE인 kDevelop를 찾아보았다. [Setting Environment] Windows 10 Home Edition 64 bit [Install] 1. kDevelop4 설치 https://userbase.kde.org/KDevelop4/Manual/WindowsSetup 2. CMake 설치 https://cmake.o..
· C/C++
1. General Naming Rules 외부인도 알아볼 수 있는 변수사용 권장. 되도록 약어를 쓰지 말 것, ※ 단, 위키피디아 등에 등재된 약어, 이미 개발자들 사이에 익히 알려진 약어는 사용가능 ex) i for an iteration(for, while), T for template parameter, 짧은 코드 내의 갯수를 의미하는 n '단어'는 Camel Case or Pascal Case 사용 ex) start rpc 라는 단어를 변수로 선언한다면? Camel Case: startRpc Pascal Case: StartRpc ※ StartRPC같은 네이밍은 잘못된 예이다. 2. Type Name Type names should start with a capital letter and hav..
M_Falcon
'C' 카테고리의 글 목록 (2 Page)