Может кто-нибудь объяснить мне, почему приведенный ниже код работает и выдает true? v1.begin()
создает итератор, но при отладке, если я проверяю значение v1.begin()
внутри функции сравнения, я вижу значение первого элемента вектора.
Связано ли это с тем, что нужно использовать typename vector<T>::iterator
для именования итератора внутри шаблона? Было бы замечательно, если бы кто-то мог уточнить это
Спасибо
template<class U, class V> bool compare(const U &v1, const U &v2, const V &v3) {
if ((v1 == v2) && (v2 == v3) ){
return 1;
} else {
return 0;
}
}
#include<iostream>
#include<vector>
using namespace std;
int main() {
vector<int> v1(10,3);
vector<int> v2(10,3);
bool iComp = compare(v1.begin(), v1.begin() + 2, v2.begin());
cout << typeid(v1.begin()).name() << " " << *v2.begin() << endl;
return 1;
}