프로그래밍(301)
-
[effective STL] 항목 24 : map에서 []나 insert는 효율 문제에 주의하자.
1234567891011class Widget {public: Widget(); Widget(double weight); Widget& operator=(double weight); ...}; ... map mW;cs double 값을 이용하여 widget을 초기화 할 수 있다. 이렇게 자료구조가 있을 때 두 가지 정도 작업이 있을 수 있다.1. map에 값을 넣으며 초기화.2. map에 들어가 있는 값을 변경하는 작업. 보통은 둘 다 이렇게 사용한다.1mW[1] = 1.50;cs map의 operator[] 연산자의 특징추가 아니면 갱신(add or update) 기능을 수행하도록 설계되어 있다. 1mW[k] = v;cs 키 값 k가 들어 있는지 점검 -> 그렇지 않다면 k와 v를 페어로 묶어 맵에 새..
2016.02.07 -
[effective STL] 항목 23 : 연관 컨테이너 대신 정렬된 벡터를 쓰는 것이 좋을 때도 있다.
일반적으로 빠른 데이터 검색을 지원하는 자료구조가 필요하면?바로 떠오르는 것은 연관 컨테이너다. 표준 연관 컨테이너는 전형적으로 균형 이진 탐색 트리로 되어있다.삽입, 삭제, 탐색이 아무 때나 이루어질 때 유리한 구조.But, 많은 프로그램들이 실제로 이런 극단적으로 혼란스러운 구조를 가지지 않는다. 대개 프로그램에서 자료구조를 사용하는 3단계1. Setup : 자로 구조를 만든다. 데이터 삽입과 삭제가 대부분이며 탐색은 거의 일어나지 않는다.2. Lookup : 셋업이 끝난 자료 구조 중 원하는 정보를 찾는다.3. Reorganize : 자료 구조의 내용물을 바꾼다. 1과 비슷한 일을 하며 작업이 끝나면 2로 진입한다. 이러한 프로그램이라면 벡터가 연관 컨테이너보다 훨씬 나은 수행성능을 제공할 가능성이..
2016.02.07 -
[effective STL] 항목 22 : set과 multiset의 키를 바꾸지 말자.
map과 multimap에 대한 직접적인 키 변경은 불가능하다.(캐스팅만 하지 않으면)set과 multiset은 그것이 가능하다. set과 multiset 내의 데이터 요소가 const가 아닌 이유일반적으로 표준화 위원회의 의도이다.map 종류는 key만 const면 되고 set은 값이 const가 아니어야 된다는 것. 한 마디로 set은 값 자체 또는 객체 내부의 값이 key 값이 된다.나머지 자료는 언제든 변환이 가능해야 된다. map은 key가 이미 있으므로 value 값의 경우 뭐든 상관 없다. 하지만내 환경에선 set으로 설정하면 STL 차원에서 바로 에러를 리턴해줬다.책에서도 어떤 STL에서는 이 코드를 거부한다더니 내가 사용하는 STL이 이 어떤 STL이었다. 12345// Error// i..
2016.02.07 -
[Design Pattern] 팩토리 패턴
new는 구상 클래스의 객체를 생성 즉 인스턴스를 의미한다.다형성을 이용해 코딩을 하면 다양한 조건문이 생성되고이는 프로그래머가 실수할 가능성이 매우 높아진다.(특히 새 구상 클래스가 설계되었을 시) 심플 팩토리(팩토리 메소드)예시) 피자가게에서 파는 피자간단하게 생각할 수 있는 것은 PizzaStore, Pizza 클래스가 필요할 것이다.Pizza는 CheesePizza 등의 부모 클래스가 되며 다형성을 이용해 이를 생성한다.피자 스토어는 Pizza 클래스를 이용해 인스턴스를 만들어 내면 된다. 123456789101112131415161718192021222324Class PizzaClass A_Pizza : Public PizzaClass B_Pizza : Public Pizza Class Pizz..
2016.01.30 -
[GIT] git ignore
빌드나 여러가지 작업을 하다보면 주요 코드 외에도 다양한 파일들이 생긴다.VS로 컴파일을 하면 sdf라던가 ipch라던가 등등 캐시파일이나 프로파일러 같은 것들이 있다. 간단히 .ignore 파일을 만들고 무시할 파일을 써주면 된다. 1vim .gitignorecs 실행하게 되면 많은 이들이 공포의 도가니탕이 되는 vim 편집기가 나온다.당황하지 말고 :wq를 순서대로 누르면 된다. 그럼 해당 깃 루트폴더에 .gitignore 파일 생성된다. 메모장으로 열어 아래와 같이 작성하면 끝!193라인으로 파워하게 세팅! 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585..
2016.01.30 -
[GIT] git stash 써보기
A를 작업하고 있는데 갑자기 B 부분의 테스트가 급하게 들어왔다면?하지만 A 작업때문에 B를 제대로 테스트 해볼 수 없을 때 코드를 잠시 백업해 둘 수 있다. stash라는 단어 자체가 챙겨두다? 숨겨두다? 약간 그런 느낌적인 느낌의 단어이다! 1git stashcs 아주 예쁜 명령어다. 헬프 명령을 때려보자!123456789C:\Work\Cpp>git stash helpusage: git stash list [] or: git stash show [] or: git stash drop [-q|--quiet] [] or: git stash ( pop | apply ) [--index] [-q|--quiet] [] or: git stash branch [] or: git stash [save [--patc..
2016.01.29