2017-11-21 10 views
0

: 옵션 후원을 소요 한 대벡터와 부스트의 차이점 :: 선택형 <vector>을 함수 매개 변수로 사용하고 빈 값을 부울 값으로 설정? 함수가 벡터을 가진 사이의 차이가 비어있는 것으로 기본값 무엇

void foo (const vector<T> & vec = {}) 

을 높일 디폴트 없습니다 : 없음

void bar (boost::optional<const vector<T>&> vec = boost::none) 

를 실행의 측면에서와 메모리 효율성? optional<vector>

+0

다른 것을 사용하면서 도망 갈 수는 없지만 단순히 다른 것을 의미합니다. –

답변

0

vector의 하나에 비해 두 개의 빈 상태를 가지고 있습니다 : 그것은 더 벡터을 포함 할 수 있습니다 또는 비어하는 벡터를 포함 할 수 있습니다. 잠시 동안 효율성 문제를 제외하고 실제로 어떤 유형이 귀하의 의도를 반영하는지 고려하십시오.

일반적으로 optional은 객체가 포함되어 있는지 여부를 나타 내기 위해 여분의 바이트가 필요하므로 약간 더 많은 메모리를 사용합니다. 또한 깃발을 설정하고 확인하는 데 약간의 비용이 듭니다. 그러나 이것이 응용 프로그램에 중요한 성능 차이를 유발한다는 증거가없는 한, 다른 것을 우선하여 선호하는 이유는 아닙니다.