본문 바로가기

C

(101)
c++ vector와 array의 차이 Array - Array는 stack에 할당된다 - Array는 Stack에 할당되므로 compile time에 결정된다 - Array는 Fixed size여야 한다 - Array는 Stack에 할당되므로 매우 빠르다 - 비교적 작은 메모리를 할당한다면, array를 쓰자 Vector - Vector는 Heap에 할당된다 - 주의할 점은 Vector의 Pointer, Vector의 Capacity, Vector의 Size는 Stack에 할당됨 - Vector는 Fixed Size가 아니어도 된다. - 비교적 큰 메모리라면 Vector를 쓰자 - Array에 비해 느리다.
c++ 벡터 remove, remove_if 사용 기록 remove_if를 쓰면 lambda 함수를 적용해서 효율적으로 원소를 제거할 수 있다. 기본 원소뿐만아니라 벡터 또한 삭제할 수 있다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 #include #include #include #include class Cat { public: Cat(std..
c++ vector for loop, iterator, range 속도 측정, For Loop을 꼭 써야 하는 경우 for loop > 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 #include #include #include #include int main() { // Range based for loop이 가장 안전하고 확실한 방법임 std::cout
c++ vector reserve를 통한 capacity 확보->속도향상 vector를 사용할 때 reserve로 capacity를 확보해 두면 속도가 향상된다 왜냐면 불필요하게 capacity를 확보하기 위해 원래 있던 elements들을 copy하고 재배치 하는 일이 없기 때문이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 #include #include #include class Cat { public: explicit Cat(std::string name) : mName{ std::move(name) } { ..
vector time complexity, emplace_back 정리 vector의 index 접근은 Best할 때 o(1)에 이루어 짐 당연함 -> vector는 vector의 시작점을 가르키기 때문에 시작점 + index로 해당 index를 접근 가능함 vector의 끝에 삽입하는 것은 o(1)에 이루어짐 (emplace_back) 벡터의 가운데에 삽입하는 것은 o(n)에 이루어 짐. 왜냐하면 가운데에 삽입하는 순간, 뒤에 있는 elements이 n번 move 됨 emplace_back 에 클래스를 넣을 때는 cats.emplace_back("cats0", 0); 과 같은 방식으로 넣자. 왜냐하면 cats.emplace_back(Cat("cats0",0))과 같이 넣으면 내부에 이미 Cat이 저장되어 있는데 불필요한 Copy가 일어나기 때문이다. cats.emplace..
c++ vector basic 설명 vector basic 설명 vector의 random access complexity -> constant O(1) insertion or removal of elements at the end - constant O(1) insertion or removal of elements - linear in the distance to the end of the vector O(n) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 6..
c++ std::function 사용법 주의할 점은 std::function을 함수의 인자로 넘길 때 const를 붙여야 한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 #include #include class FunctionObj { public: void operator() (int i) { std::cout
c++ lambda + stl(filter, sort, remove_if, reduce, vector) lambda 함수는 stl과 결합하면 상당히 좋은 성능을 보인다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 1..