vector에 들어갈 데이터의 크기를 미리 알고 있을때는 vector.reserve()를 활용하는것이 좋습니다. vector에 원소를 넣을때 용량이 부족하면 새로운 메모리 할당 -> 복사->원래 메모리에 저장된 객체 소멸->원래의 메모리 해제 등 4단계가 반복됩니다. 그러므로 성능이 많이 떨어지요. 그래서 미리 reserve를 통해 사용할 메모리를 할당해 놓으면 위의 4가지 단계가 발생하지 않아 성능이 좋아 집니다. 자료 출처: Effective STL
vector는 배열을 대체하는 좋은 컨테이너 입니다. vector에 값을 넣으면 size 하고 capacity가 늘어나죠. 그러데 capacity가 만약에 1000까지 늘어난 후에 원소를제거해 size 10으로 해도 vector의 capacity는 줄어 들지 않습니다. 이때 쉽게 capacity를 줄이는 방법이 있습니다. vector.swap(members); vector 하면 members의 사본이 만들어 집니다. 복사 생서자의 원리로... 이때 사본은 capacity가 size만큼 줄어든 것입니다. 그런 후에 swap를 하면 줄어든 사본과 원래의 members가 바뀌어 버리는 거죠. 그리고 사본으로 들어온 원본은 임시 객체이므로 사라지게 되구요. 자료 출처: Effectice STL
복합리터럴를 설명하는 것보다 예제로 보는게 이해가 쉽더군요. int diva[2]= {20,30}; 은 일반적인 배열 선언의 모습인데요. 이것을 복합리터럴로 표현하면 다음과 같습니다. (int [2]){20,30}; 즉 배열명이 없는 형태입니다. C99표준에 추가된 것으로 변수명이 없기때문에 선언하고 값을 유지하려면 포인터를 사용해야 합니다. int *pt = (int [2]){20,30); 복합리터럴은 다음과 같은 경우에도 유용하게 사용됩니다. void sum(int ar[], int n); 이란 함수가 있을 경우 sum( (int [6]){1,2,3,4,5,6}, 6); 과 같이 사용할 수가 있습니다.
- Total
- Today
- Yesterday
- Pixel Pals
- weka
- 배당급
- 카카오 에드
- 고체 향수
- 브리다 정수기
- 루미큐브 종류
- 별이 빚나는 밤
- 빈센트 반 고흐
- 남설 팔찌
- 르세라핌
- 로니카 BCS
- GKRS
- 증권정보포털
- Life Chair
- JMW 헤어드라이기기
- 화분벌레
- yugabyteDB
- 홈 오피스
- VARIDESK
- node.js
- 톡토기
- 솔리드 쿨론
- 코라나 19
- 오미크론
- 파나소닉 비데 DL-EH10KWS
- 유가바이트디비
- Sybase IQ
- 별잉 빛나는 밤
- 매직 트랙패드2
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |