본문 바로가기

프로그램언어/Effective STL

항목3 : 복사는 컨테이너 안의 객체에 맞게 비용은 최소화하며, 동작은 정확하게 하자. 무심코 지나간 이야기 이지만 책을 읽으면서 좀더 자세히 혹시 아는 내용이면 튼튼하게 내공을 쌓고, 부족한 부분은 보충하고자 하는 의미에서 정리를 시작하였습니다. 그 동안 현직 프로그래머인데라는 자만심에 의해 제 자신 스스로 도태되어 가는 모습을 느끼고 있을 때 상당히 괴롭고 이 짓을 해야 하는 가라는 고민에 빠져 헤어나오지 못하고 슬럼프가 오랫동안 지속되었습니다. 얼마동안 노력을 하지 않았다부터 시작을 하여 지금에 있는 모습까지 뒤돌아 보면서 많은 것을 느끼며 이제 새로이 시작하는 마음에 책을 다시 잡고 틈틈이 공부하면서 내공을 쌓고자 시작을 하였습니다. 많은 분들에게 도움이 되면 좋고 아니면 참고할 만한 블로그가 되었으면 하는 마음에 이렇게 정리를 시작할까 합니다. 서 론 컨테이너라 한다면 보통은 데이.. 더보기
[ STL ]컨테이너에 독립적인( container-independent ) 코드 라는 환상을 조심하자. 서 론 STL은 일반화( generalization)에 기초를 두고 만든 프로그래밍 장치이면 언어입니다. 배열 [ array] 이란 데이터 집합은 컨테이너로 일반화되었고, 매개 변수를 통해 컨테이너에 담을 수 있는 데이터의 타입을 지정할 수 있도록 만들어졌습니다. 함수는 알고리즘으로 일반화되었고, 알고리즘에서 사용되는 반복자의 타입으로 매개 변수화 되었습니다. 표준 연속 메모리 컨테이너는 임의 접근 반복자를 쓸 수 있도록 해주고, 이와 반대로 노드 기반 컨테이너는 push_front와 push_back을 지원하지만, 연관 컨테이너는 그렇지 않습니다. 연관 컨테이너에서는 로그 시간의 복잡도를 가진 low_bound, upper_bound, equal_range 함수를 쓸 수 있지만, 시퀸스 컨테이너를 지원.. 더보기
[ STL ] 효과적인 컨테이너 ( container ) 요리법 서 론 STL은 반복자, 알고리즘, 함수 객체 등을 모아 놓은 것이죠, 하지만 대부분의 C++ 프로그래머들의 마음에 가장 멋진 것으로 늠름하게 서 있는 것은 컨.테.이.너.가 아닐까 합니다. 자바의 자료구조를 부러워하고 C++ 타입의 배열을 보면은 한숨아닌 한숨을 쉬다가 STL 컨테이너를 접한 사람들은 한 마디로 압도 당할 수밖에는 없습니다. - 크기를 지정해 주지 않고도 알아서 늘어나고( 혹은 줄어들고), 내부에 들어 있는 객체의 개수도 추적해 주고, 메모리 관리까지 알아서 해주니 말이죠. 요소의 타입만 정해주면 어떤 데이터든 조작할 수 있는 Template의 특징을 그대로 가지면서, 데이터 조작에 소요되는 알고리즘적인 복잡도까지 미리 보장해 주어, 프로그래밍의 재미를 한층 높여주기 때문이라 할 수 있.. 더보기