radim nesto, tj pokusavam malo provjezbat genericke funkcije na primjeru kopiranja sa uslovom, copy if, evo sta sam uradio, nekako mi je sve logicno, ali na oznacenoj liniji kompajler javlja gresku:
Code:
#include<iterator>
#include<vector>
#include<iostream>
using namespace std;
template <typename In, typename Out, typename Pred>
void copy_if(In pocetak, In kraj, Out prema, Pred op)
{
while( pocetak != kraj)
{
if(op(*pocetak))
{
*prema = *pocetak;
prema++;
}
pocetak++;
}
return prema;
}
template <typename t, typename br>
t provjera(br podatak)
{
if (podatak>0) return 1;
else return 0;
}
int main()
{
vector<int> a;
vector<int> b;
int x;
while ( cin >> x )
a.push_back(x);
copy_if(a.begin(),a.end(),back_inserter(b),provjera); //******************ovdje je greska
cout<<"Stari niz:\n";
int i;
for(i=0;i<a.size();i++)
cout<<a[i];
cout<<"\nNovi niz:\n";
for(i=0;i<b.size();i++)
cout<<b[i];
system("pause");
return 0;
}
#include<iterator>
#include<vector>
#include<iostream>
using namespace std;
template <typename In, typename Out, typename Pred>
void copy_if(In pocetak, In kraj, Out prema, Pred op)
{
while( pocetak != kraj)
{
if(op(*pocetak))
{
*prema = *pocetak;
prema++;
}
pocetak++;
}
return prema;
}
template <typename t, typename br>
t provjera(br podatak)
{
if (podatak>0) return 1;
else return 0;
}
int main()
{
vector<int> a;
vector<int> b;
int x;
while ( cin >> x )
a.push_back(x);
copy_if(a.begin(),a.end(),back_inserter(b),provjera); //******************ovdje je greska
cout<<"Stari niz:\n";
int i;
for(i=0;i<a.size();i++)
cout<<a[i];
cout<<"\nNovi niz:\n";
for(i=0;i<b.size();i++)
cout<<b[i];
system("pause");
return 0;
}