#include <vector>
#include <iostream>
using namespace std;
static const int NOT_FOUND = -1;
template <class sequence, class T>
int binarySearch(sequence& seq, int low, int high, T& item)
{
//..
}
template <class sequence, class T>
int binarySearch(const sequence& seq, const T& item)
{
if (seq.size() == 0)
return NOT_FOUND;
return binarySearch(seq, 0, seq.size() - 1, item);
}
int main()
{
vector<int> t1 = {0, 3 ,45, 94};
cout << binarySearch(t1, 0);
//binarySearch(t1, 0, t1.size() - 1, 45);
return 0;
}
왜 컴파일러는 동의하지 않습니다이러한 참조 매개 변수를 const로 선언하거나 값으로 전달해야하는 이유는 무엇입니까?
template <class sequence, class T>
int binarySearch(sequence& seq, T& item)
?
는 또한, 왜 언급 컴파일 등의 프로그램,하지만하지 컴파일 주에서
binarySearch(t1, 0, t1.size() - 1, 45);
를 호출합니까?
어떤 경우에 컴파일러 오류는 " 'binarySearch'에 대한 호출에 대한 일치하는 기능입니다.
't1.size()'를 int로 사용하지 않는 한가지 문제점은 부호없는 값을 반환하기 때문에 먼저 int로 변환 한 다음' int (t1.size()) - 1' – theharshest