Piszę Iterator dla kontenera, który jest używany zamiast pojemnika STL. Obecnie pojemnik STL jest używany w wielu miejscach z c++11 foreach syntax, np .: for(auto &x: C)
. Mamy potrzebne do aktualizacji kodu do korzystania z niestandardowej klasy, która otacza pojemnik STL:Składnia foreach i niestandardowa iterator C++ 11
template< typename Type>
class SomeSortedContainer{
std::vector<typename Type> m_data; //we wish to iterate over this
//container implementation code
};
class SomeSortedContainerIterator{
//iterator code
};
Jak mogę dostać auto używać poprawnej iterator dla niestandardowego pojemnika tak, że kod jest w stanie nazwać w następujący sposób ?:
SomeSortedContainer C;
for(auto &x : C){
//do something with x...
}
Ogólnie rzecz biorąc, co jest wymagane, aby automatycznie używać poprawnego iteratora dla klasy?
Jeśli używasz programu Visual Studio, możesz najechać myszą na nazwę zmiennej, aby zobaczyć jej typ. IIRC, pokazuje rzeczywisty typ, a nie 'auto'. –