C/C++

· 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/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..
· C/C++
1. 용도 상수 PI 3.141593 제곱(pow), 제곱근(sqrt) 사용 2. 예제 https://www.acmicpc.net/problem/3053 3053번: 택시 기하학 문제 19세기 독일 수학자 헤르만 민코프스키는 비유클리드 기하학 중 택시 기하학을 고안했다. 택시 기하학에서 두 점 T1(x1,y1), T2(x2,y2) 사이의 거리는 다음과 같이 구할 수 있다. D(T1,T2) = |x1-x2| + |y1-y2| 두 점 사이의 거리를 제외한 나머지 정의는 유클리드 기하학에서의 정의와 같다. 따라서 택시 기하학에서 원의 정의는 유클리드 기하학에서 원의 정의와 같다. 원: 평면 상의 어떤 점에서 거리가 일정한 점들의 집합 www.acmicpc.net 3. 문제풀이 개념 '택시 기하학' https:..
· C/C++
1. 정의복사 생성자-> '값'이 복사되는 것임.같은 값을 갖는 여러 Object, Instance 생성시 유용. 2. 구문const student &s 처럼 const reference사용 (원본의 data를 변경할 일은 없기 때문에) 3. 예제12345678910111213141516171819202122232425262728293031323334353637383940414243 #include using namespace std; class student{ private: int score; string name; public: student(){ //Default Constructor this->score = 0; this->name = " "; } student(string name, int s..
M_Falcon
'C/C++' 카테고리의 글 목록 (2 Page)