Разделение на файлы
Как можно разделить данный код на файлы? (.h, .cpp) Когда использовал классы, в .h находился сам класс, то есть class Name{... А в .cpp была его реализация. А как похожее разделение сделать здесь, если такое вообще возможно?
#include<iostream>
#include "Functor.h"
template<class ForwardIterator1, class ForwardIterator2>
ForwardIterator1 search_end(ForwardIterator1 first1, ForwardIterator1 last1, ForwardIterator2 first2, ForwardIterator2 last2){
if (first2 == last2) return last1;
ForwardIterator1 ret = last1;
for (; first1 != last1; ++first1) {
ForwardIterator1 it1 = first1;
ForwardIterator2 it2 = first2;
while (*it1 == *it2) {
++it1;
++it2;
if (it2 == last2) {
ret = first1;
break;
}
if (it1 == last1) return ret;
}
}
return ret;
}
class Functor{
public:
bool operator()(int i, int j) {
return i == j;
}
};
template<class ForwardIterator1, class ForwardIterator2, class Predicate>
ForwardIterator1 search_end_if(ForwardIterator1 first1, ForwardIterator1 last1, ForwardIterator2 first2, ForwardIterator2 last2, Predicate Functor){
ForwardIterator1 ret = last1;
for (; first1 != last1; ++first1) {
ForwardIterator1 it1 = first1;
ForwardIterator2 it2 = first2;
while (Functor(*it1, *it2)) {
++it1;
++it2;
if (it2 == last2) {
ret = first1;
break;
}
if (it1 == last1) return ret;
}
}
return ret;
}
int main() {
int* c;
int a[10] = { 1, 26, 33, 40, 0, 1, 26, 83, 41, 50 };
int b[3] = { 1, 26 };
c = search_end(a, a + 10, b, b + 2);
if (c == a + 10) std::cout << "Not found" << std::endl;
else std::cout << "Found on position number " << (c - a) << std::endl;
std::cout<<"_________________________________________________________________________" << std::endl;
int* n;
int x[12] = { 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 4, 4 };
int y[3] = { 2, 4, 4 };
search_end_if(x, x + 12, y, y + 3, functor());
functor f;
n = search_end_if(x, x + 12, y, y + 3, f);
if (n == x + 12) std::cout << "\nNot found" << std::endl;
else std::cout << "\nFound on position number " << (n - x) << std::endl;
return 0;
}