본문 바로가기

Programming

stack_3 더보기
stack_2 더보기
stack_1 더보기
이펙티브 STL_3 [Effective STL] 2006스콧 마이어스 저 " C++ 표준 템플릿 라이브러리를 효과적으로 활용하는 50가지의 명쾌한 테크닉 모음 항목 15. 잊지말자 string은 여러가지 방식으로 구현되어 있다는 사실을 - string의 크기가 char*의 크기보다 7배 넘는 경우가 있다고 한다 어떤 경우일까!?! 항목 17. 쓸데없이 남은 용량은 바꿔치기(swap)를 사용하자 항목 18. vector 보기를 돌같이 하자 - 압축 데이터 형식을 사용하기 때문에 bool 객체가 들어있지 않고 하나 하나의 비트로 담겨 있음 항목 24. map::operator[]나 map::insert는 표율 문제에 주의하여 선택하자 map::operator[]의 경우: - 추가 or 갱신의 역할 - 해당 맵에 key가 있는지.. 더보기
이펙티브 STL_2 [Effective STL] 2006스콧 마이어스 저 " C++ 표준 템플릿 라이브러리를 효과적으로 활용하는 50가지의 명쾌한 테크닉 모음 항목 9 데이터를 삭제할 때에도 조심스럽게 선택할 것이 많다. vector. string. deque의 경우 erase-remove 사용 list.의 경우 remove가 효율적. set, multiset, map dlf ruddn remove류의 맴버 함수가 없고 , remove를 사용하면 컨테이너를 변형시키는 경우가 있음 = erase 사용 삭제 하는 방법 1. 리스트 내 요소 삭제 하기 ex) vector 의 경우 erase 할 경우 iterator로 지우기 전에 가리키고 있던 iterator를 다음으로 옮겨야 한다. 2. 삭제한 리스트 만든 후 복사해 옮기기 항.. 더보기
이펙티브 STL_1 [Effective STL] 2006스콧 마이어스 저 " C++ 표준 템플릿 라이브러리를 효과적으로 활용하는 50가지의 명쾌한 테크닉 모음 1. 적재적소에 알맞은 컨테이너를 사용하자 표준 STL 시퀀스 컨테이너 : vector, string, deque, list 표준 STL 연관 컨테이너 : set, multiset, map, multimap 비표준 연관 컨테이너 : hash_set, hash_multiset, hash_map 등.. 연속 메모리 컨테이너 : 연속된 메모리 공간에 요소들을 저장 노드 기반 컨테이너 : 메모리 공간들이 포인터로 서로 연결되어 있음 2. 컨테이너에 독립적인 코드라는 환상을 조심하자 : vector 쓰는 자리에 list를 써도 되도록 짜는 것 : 고유 함수를 사용하지 못할 수.. 더보기
이펙티브 모던 C++_8 [Effective Modern C++] 2015 스콧 마이어스 저 " C++11 과 C++ 14 를 효과적으로 사용하는 42가지 방법 8장 다듬기 항목 41 이동이 저렴하고 항상 복사되는 복사 가능 매개변수에 대해서는 값 전달을 고려하라 효율성으로는 보편 참조 > 왼값 참조 + 오른 값 참조(오버 로딩) > 값 전달으로 볼 수 있다. 하지만 이동이 저렴하고 항상 복사되는 복사 가능 매개변수에 대해서는 값 전달을 고려하라 단, 값 전달의 경우 잘림 문제가 있을 수 있다. (메모리가 부족할 경우 모두 복사되지 않는 현상 int -> short) * 왼값 인수의 경우 값 전달 다음의 이동 배정은 참조 전달 다음의 복사 배정보다 훨씬 비쌀 가능성이 있다. 값 전달에서는 잘림 문제가 발생할 수 있으므로, 일반적.. 더보기
이펙티브 모던 C++_7 항목 37. std::thread들을 모든 경로에서 합류 불가능하게 만들어라 = 이미 조인되거나, detach된 깔끔한 상태로 만들어라 = joinable 상태에서 소멸자가 호출되면 종료된다. = 나중에 조인될 여지가 있는 스레드를 만들지 말자 ex) 조건이 false일 경우 조인되지 않고 t의 소멸자가 호출되어 프로그램이 종료된다. 종료되는 이유 : 암묵적 join을 할 경우, 올바른 상태가 되기까지 대기할 수는 없다. 종료하는 것이 맞다. 암묵적 detach를 할 경우, 소멸된 변수 localValue에 접근할 가능성이 있다. 종료하는 것이 맞다. => 때문에 joinable 상태의 소멸자가 호출되면 종료시키는 것이 옳다 bool doWork() { int localValue = 6; std::thr.. 더보기