나는 할당을 위해받은 sorted_vector 헤더 파일의 벡터에 대해 .find를위한 템플릿 기능을 가지고 있습니다. 다른 방법/생성자에 대한 단위 테스트를하고 있는데, BOOST 라이브러리를 사용하여 버그가 없는지 확인하고 버그가있을 경우에 대비하여 코드를보다 확실하게 작성합니다.두 코드 블록의 차이점은 무엇입니까?
template <typename T>
typename sorted_vector<T>::iterator sorted_vector<T>::find(value_type const& value) const {
auto front = beg_;
auto back = end_;
for(;;) {
auto p = (back - front)/2 + front;
if(p == end_)
return p;
else if(*p == value)
return p;
else if(*p > value)
back = p;
else
front = p + 1;
}
}
그리고이 블록 :에 대한 무한의 if 문
template <typename T>
typename sorted_vector<T>::iterator sorted_vector<T>::find(value_type const& value) const {
auto front = beg_;
auto back = end_;
for(;;) {
auto p = (back - front)/2 + front;
if(p == back)
return end_;
else if(*p == value)
return p;
else if(*p > value)
back = p;
else
front = p + 1;
}
}
내 질문은 첫 번째에 관한입니다 난 그냥이 두 코드 블록의 차이점에 대한 빠른 질문을했다. 첫 번째 코드 블록에서 끝 대신 값을 찾을 수없는 경우 벡터를 반복 할 때마다 중간 값이 반환됩니까? 아니면 두 if 문 사이의 주요 차이점은 무엇입니까?
감사합니다. 그들은이 방법을 인스턴스화하는 beg_ 및 end_에 대한
편집 :
private beg_;
private end_;
여기에들이 일반적으로 사용하는 방법은 다음과 같습니다
sorted_vector() : beg_(nullptr), end_(nullptr), cap_(nullptr) { }
iterator begin() { return iterator(beg_); }
iterator end() { return iterator(end_); }
두 번째 형식은 조금 더 형식이 좋습니다. –
'private'형식을 사용할 수 없습니다. –