PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : c++: iterator traits



barton4
14-12-2012, 16:23
Hi, ich will eine Template-Funktion schreiben, welche als Argumente jeweils den begin- und end-Iterator übergeben bekommt sowie den dazugehörigen Typ. Wie der Name der Funktion bereits erahnen lässt, soll diese generisch in Standartcontainer Elemente löschen. Nun benötige ich als dritten Parameter den Typ, auf den der Iterator zeigt. Ich hab bisher noch nicht viel mit template traits gemacht aber ich denke std::iterator_traits ist so etwa das was ich brauche. Leider wird der code nicht compiliert: „../src/helper.h:8:64: error: ‘std::iterator_traits<_Iter>::value_type’ is not a type“. Weis jemand was daran falsch ist. Auch wenn es vielleicht bereits dafür eine Lösung in der std gibt geht es mir hier vor allem ums Prinzip als den Sinn der Funktion



#pragma once

#include <iterator>

namespace stdmy
{
template<typename T>
void deleteByValue(T _begin, T _end, std::iterator_traits<T>::value_type _val)
{
//kommt noch
}
}

locus vivendi
14-12-2012, 20:50
Hi, ich will eine Template-Funktion schreiben, welche als Argumente jeweils den begin- und end-Iterator übergeben bekommt sowie den dazugehörigen Typ. Wie der Name der Funktion bereits erahnen lässt, soll diese generisch in Standartcontainer Elemente löschen.
Diese Funktion gibt es schon, aber ich gehe davon aus, dass du Gründe hast sie selber zu schreiben.


Leider wird der code nicht compiliert: „../src/helper.h:8:64: error: ‘std::iterator_traits<_Iter>::value_type’ is not a type“
Die Fehlermeldung sagt eigentlich schon genau was los ist: Da fehlt ein "typename" für den dritten Parameter.

barton4
14-12-2012, 23:06
danke, jetzt gehts!