본문 바로가기

All250

[C++ STL] 라이브러리 알고리즘의 반복자 인자가 마지막 요소의 다음을 참조하는 이유 라이브러리에서 알고리즘의 범위를 지정하기 위해 2개의 반복자를 지정한다. 하나는 첫 요소를 참조하기 위한 반복자와, 나머지는 마지막 요소의 다음을 참조하는 반복자이다. 컨테이너는 아래와 같은 위치를 참조하는 반복자를 반환하는 멤버 함수를 가지고 있다. 왜 마지막 요소를 참조하지 않고 마지막 요소의 다음을 참조하는 반복자를 사용할까? 이에는 크게 3가지 이유가 있다. 첫 번째 만약 마지막 요소의 다음이 아닌 마지막 요소를 참조한다면 요소가 없는 컨테이너의 범위, 즉 크기가 0인 범위를 나타낼 경우 요소가 존재하지 않기 때문에 다른 무언가의 방법으로 표현해야 한다. 이는 크기가 0인 컨테이너의 범위와 크기가 1 이상인 컨테이너의 범위를 나타낼 때의 방법이 다르게 되어 혼동을 줄 수 있고 신뢰하기 어렵게 된다.. 2019. 11. 25.
[C/C++] 메모리 동적할당 시 malloc을 사용한다면 / dereferencing NULL pointer, Warning C6011 C 또는 C++에서 malloc 함수를 사용할 경우 아래와 같이 사용할 수 있다. int* ptr = (int*)malloc(sizeof(int)*5); *ptr = 4; 하지만 위 코드는 아래와 같이 C6011 경고를 발생시킨다. Dereferencing NULL pointer 'ptr'. 널 포인터 ptr을 역참조하고 있다라는 뜻이다. malloc 함수는 메모리 할당에 실패하면 null을 반환하는데 (ex. 메모리 공간이 부족한 경우 ) 이 경우 ptr이 null을 가지기 때문에 올바르지 않은 메모리 위치(null)에 접근하는 것을 막기위해 경고를 띄우는 것이다. 올바른 사용법은 다음과 같이 포인터 변수가 null인지 확인 후 사용한다. C++에서는 웬만하면 메모리 동적할당 시 malloc보단 new.. 2019. 11. 24.
REST API / RESTful REST API 제대로 알고 쓰기 https://meetup.toast.com/posts/92 RESTful이란? https://jeong-pro.tistory.com/180 REST API 역사 및 설명 (Toss) https://www.youtube.com/watch?v=RP_f5dMoHFc 2019. 11. 19.
[MariaDB,MySQL] Trigger 사용법 / 특정 테이블 변경 시 관련 테이블 이벤트 실행 Trigger는 지정된 테이블의 변경을 감지하여 INSERT / UPDATE / DELETE 이벤트가 일어났을 때 설정한 이벤트를 실행하도록 합니다. 예를 들어, A테이블의 어떤 row의 name 필드의 값이 UPDATE 되면 B테이블의 name 필드도 동일하게 UPDATE 할 수 있습니다. Trigger는 함수, 핸들러처럼 생성해놓으면 알아서 조건에 맞게 자동으로 실행됩니다. Trigger 생성 예제 1) 할인 테이블에 할인율 필드가 업데이트 되면 상품 테이블의 할인율도 똑같이 적용하고 싶을 때 DELIMITER // CREATE TRIGGER update_item AFTER UPDATE ON sale_table FOR EACH ROW BEGIN IF NEW.discount_rate != OLD.dis.. 2019. 11. 12.
[정리] 6장 알고리즘 라이브러리 간단 정리 std::accumulate(b, e, t) : [b, e) 범위의 각 요소들의 합에 t를 더하여 반환합니다. t값으로 요소에 대한 항등원을 주게되면 순수한 누적합을 구합니다. ex) 요소가 int type일 경우 t 값으로 0을 주면 [b, e) 범위의 요소들의 합을 반환합니다. 위 함수는 다음과 같이 동작합니다. temp = t; while(b!=e) { temp = temp + *b; ++b; } return temp; std::find(b, e, t) std::find_if(b, e, p) std::search(b, e, b2, e2) : [b, e) 범위에서 주어진 값을 찾는 알고리즘입니다. find 함수는 t 값을 찾습니다. find_if 함수는 서술함수인 p를 만족하는 값을 찾아 해당 반복자.. 2019. 11. 11.
[C++ STL] <algorithm> std::remove_if 함수 안녕하세요. 오늘은 헤더의 std::remove_if() 함수에 대해 알아보겠습니다. template ForwardIterator remove_if (ForwardIterator first, ForwardIterator last, UnaryPredicate pred); remove_if 함수는 Input 컨테이너의 [first, last) 범위의 요소들 중 서술 함수인 pred를 만족하지 않는 요소를 Input 컨테이너의 처음부터 차례로 덮어씌웁니다(복사). first, last Input 컨테이너의 범위로 주어진 반복자입니다. [first1, last1) 범위의 컨테이너에서 요소를 탐색합니다. pred 단항 연산을 하는 서술 함수로서 Input 컨테이너의 요소들 중 해당 함수를 만족하지 않을 때 복사합.. 2019. 11. 8.