일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 함수 객체
- 참조자
- 영화 리뷰
- 예외
- 오블완
- 반복자
- 암시적 변환
- Effective c++
- resource management class
- lua
- 다형성
- exception
- 언리얼
- 스마트 포인터
- implicit conversion
- 루아
- 영화
- Smart Pointer
- 티스토리챌린지
- reference
- c++
- 메타테이블
- operator new
- UE4
- more effective c++
- 게임
- 비교 함수 객체
- effective stl
- 상속
- virtual function
- Today
- Total
목록Vector (3)
스토리텔링 개발자
항목 16. 기존의 C API에 vector와 string을 넘기는 방법을 알아두자 C API배열과 char*를 사용하는 기존 C API들은 여전히 통용되고 있다.이들의 사용을 아예 배제할 순 없기 때문에 넘기는 방법은 알아두는 것이 좋다. 배열 형태로 변환 방법vector v;&v[0]; // 배열 형태로 변환string s;s.c_str(); // char* 형태로 변환 배열(포인터)로 바꿀 시 주의점빈 벡터를 배열로 변경하려 할 시 주의해야 한다.void doSomething(const int* pInts, size_t numInts);vector v;...doSomething(&v[0], v.size());// 헌데, 만약 v가 빈 벡터라면?// &v[0]은 있지도 않은 메모리의 주소..
항목 13. 동적으로 할당된 배열보다는 vector와 string이 낫다 vector, string을 사용해야 하는 이유1동적 할당 배열의 경우 아래의 부담이 있다.언젠가는 메모리를 해제해야 한다.delete도 메모리 타입에 따라 제대로 써야 한다.delete는 한번만 호출해야 한다.하지만 vector, string은 이 모든 걸 알아서 해준다.2STL 시퀀스 컨테이너이기 때문에 STL의 모든 알고리즘을 사용할 수 있다.물론 배열도 사용 가능하긴 하지만 제한적이다.begin, end, size 같은 멤버 함수가 없다.iterator나 reverse_iterator, value_type 등의 중첩된 typedef 타입이 없다.3구식 코드 이식성 문제도 문제 없다.vector, string 데이터를 배열..
개요 벡터 반복자를 사용해서 순회 중 새 요소를 추가하는 순간 크래시가 발생했습니다. 컴파일러 특성에 따라 다를 수도 있겠지만, 컴파일러의 특성에 기반한 코드는 위험하니 이 용법은 문제가 있다고 봐도 무방합니다. 어떤 점이 문제였을까요. 문제 파악 이해를 돕기 위해 코드를 첨부합니다. vector test; test.push_back(1); test.push_back(1); test.push_back(1); for(auto it = test.begin() ; it != test.end() ; ++it) { test.push_back(1); } 마지막에 요소가 추가되었으므로 반복자는 문제 없이 계속 루프를 돌면 되지 않았을까요? 이 코드의 문제는 벡터가 일정 크기의 메모리를 미리 마련해둔다는 점입니다. 일..