[Risolto] [C++] Funzione find su un vettore di tipo generico
Inviato: domenica 15 giugno 2014, 15:09
Ciao a tutti!!
Devo creare una funzione che controlli la presenza di una City c in vector<City> tour.
Ho provato a fare:
ma mi restituisce questo errore:
Come posso fare?
Grazie
Devo creare una funzione che controlli la presenza di una City c in vector<City> tour.
Ho provato a fare:
Codice: Seleziona tutto
bool Tour::containsCity(City c) {
std::vector<City>::iterator iter = std::find_if(this->tour.begin(), this->tour.end(), c);
size_t index = std::distance(this->tour.begin(), iter);
if (index == this->tour.size()) {
return false;
}else {
return true;
}
}Codice: Seleziona tutto
g++ -c -g -MMD -MP -MF "build/Debug/GNU-Linux-x86/Tour.o.d" -o build/Debug/GNU-Linux-x86/Tour.o Tour.cpp
/usr/include/c++/4.9.0/bits/predefined_ops.h: In instantiation of ‘bool __gnu_cxx::__ops::_Iter_pred<_Predicate>::operator()(_Iterator) [with _Iterator = __gnu_cxx::__normal_iterator<City*, std::vector<City> >; _Predicate = City]’:
/usr/include/c++/4.9.0/bits/stl_algo.h:120:22: required from ‘_RandomAccessIterator std::__find_if(_RandomAccessIterator, _RandomAccessIterator, _Predicate, std::random_access_iterator_tag) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<City*, std::vector<City> >; _Predicate = __gnu_cxx::__ops::_Iter_pred<City>]’
/usr/include/c++/4.9.0/bits/stl_algo.h:162:43: required from ‘_Iterator std::__find_if(_Iterator, _Iterator, _Predicate) [with _Iterator = __gnu_cxx::__normal_iterator<City*, std::vector<City> >; _Predicate = __gnu_cxx::__ops::_Iter_pred<City>]’
/usr/include/c++/4.9.0/bits/stl_algo.h:3804:45: required from ‘_IIter std::find_if(_IIter, _IIter, _Predicate) [with _IIter = __gnu_cxx::__normal_iterator<City*, std::vector<City> >; _Predicate = City]’
Tour.cpp:64:92: required from here
/usr/include/c++/4.9.0/bits/predefined_ops.h:231:30: error: no match for call to ‘(City) (City&)’
{ return bool(_M_pred(*__it)); }Grazie