Je veux faire une fonction qui prends deux containers de même taille et qui rend un container contenant la valeur min entre les deux pour chaque dimension.
1 3 5 6 2
3 1 0 8 9
--->
1 1 0 6 2
J'ai donc fait une version un peu naïve, mais j'ai un problème concernant la résolution du template de la fonction std::min.
Le "typeof(..)" est pour le moins crade. En effet, c'est spécifique à gcc il me semble.
Code :
- template<class Container>
- Container minValues(const Container& c1, const Container& c2){
- Container tmp = Container(c1.size());
- std::transform(c1.begin(), c1.end(), c2.begin(), tmp.begin(), std::min<typeof(*(c1.begin()))> );
- return tmp;
- }
|
Comment puis-je faire ça plus proprement (sans typeof en gros) ?
Si je dois absolument ajouter un second argument au template (le type contenu dans le container), y a-t-il une solution pour n'être pas obligé de spécifier explicitement le template à l'appel ?
Message édité par Lan Wezel le 29-05-2010 à 12:47:38