인덱스 생성 함수 std :: distance (a, b)에 "기억하기 쉬운"인터페이스를 얻기 위해 을 와std :: vector 및 iterator를 단일 템플릿으로 사용 typename
std::vector<MyType> vect;
std::vector<MyType>::const_iterator iter;
...
...
size_t id = vectorindex_of(iter, vect);
: 처럼 벡터 와 그 반복자와 템플릿 함수를 호출하여 : (vec.begin() 벡터의 기본에 대해 사용하는 경우) 그것의 더 나은 구분의 생각은 인수를의 결코 의 순서를 혼동하지 않는 이유는 ;-)
위 아이디어의 명백한 공식은 sth를 읽습니다. like
template <typename T>
inline
size_t vectorindex_of(
typename std::vector<T>::const_iterator iter,
const std::vector<T>& vect) {
return std::distance(vect.begin(), iter);
}
... 작동하지만 어색해 보입니다.
나는 암시 템플릿 메커니즘이 (의사 코드)와 같은 유형을 을 추론 싶어요 : 작동하지 않습니다
template <typename T>
inline
size_t vectorindex_of(T::const_iterator iter, const T& vect) {
return std::distance(vect.begin(), iter);
}
을 .... 하지만 왜?
이 간단한 수정을 알려 주셔서 감사합니다. 귀하의 답변을 모두 "수락 된 답변"으로 표시하고 싶지만 한 가지만 가능합니다 ;-) –