Modifier type std::allocator
Fermé
Franck7511
Messages postés
14296
Date d'inscription
jeudi 24 décembre 2009
Statut
Membre
Dernière intervention
10 août 2017
-
Modifié par Franck7511 le 15/03/2016 à 10:33
Franck7511 Messages postés 14296 Date d'inscription jeudi 24 décembre 2009 Statut Membre Dernière intervention 10 août 2017 - 20 mars 2016 à 15:11
Franck7511 Messages postés 14296 Date d'inscription jeudi 24 décembre 2009 Statut Membre Dernière intervention 10 août 2017 - 20 mars 2016 à 15:11
A voir également:
- Modifier type std::allocator
- Modifier dns - Guide
- Modifier liste déroulante excel - Guide
- Modifier story facebook - Guide
- Comment modifier un pdf - Guide
- Modifier extension fichier - Guide
2 réponses
Dalfab
Messages postés
706
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
2 novembre 2023
101
15 mars 2016 à 15:27
15 mars 2016 à 15:27
Bonjour,
À si Visual plante! Et en essayant
À si Visual plante! Et en essayant
std::vector<K, typename Alloc::rebind<K>::other> Vec2; std::vector<K, std::allocator_traits<Alloc>::rebind_alloc<K>> Vec2;
ElementW
Messages postés
4814
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
5 octobre 2021
1 227
Modifié par gravgun le 15/03/2016 à 19:25
Modifié par gravgun le 15/03/2016 à 19:25
'lut
Pourquoi ne pas passer un type d'allocateur pour tous les vector?
from human import idiocy
del idiocy
Pourquoi ne pas passer un type d'allocateur pour tous les vector?
template<class T, class K, template<typename> class Alloc = std::allocator> class MyClass { std::vector<T, Alloc<T> > Vec1; std::vector<K, Alloc<K> > Vec2; };Ou si on veut spécifier spécialement ceux pour T et K (celui de K étant celui de T par défaut)(et peut-être pour tous les autres types qui peuvent suivre):
template<class T, class K, template<typename> class AllocT = std::allocator, template<typename> class Alloc = AllocT> class MyClass { std::vector<T, AllocT<T> > Vec1; std::vector<K, Alloc<K> > Vec2; };
from human import idiocy
del idiocy
Franck7511
Messages postés
14296
Date d'inscription
jeudi 24 décembre 2009
Statut
Membre
Dernière intervention
10 août 2017
1 121
Modifié par Franck7511 le 15/03/2016 à 21:02
Modifié par Franck7511 le 15/03/2016 à 21:02
Bonjour,
C'est une bonne idée mais je voudrais garder une compatibilité avec le standard...
Toutefois, si je peux "récupérer" std::allocator à partir de std::allocator<__Ty> ça pourrait être une piste, non ?
J'essaie ça :
Et ça ne marche pas.
Par contre, ça :
Fait bien ce que je veux. Idem avec la version allocator_traits.
Mais l'idée c'est d'utiliser avec d'autres allocators :)
Merci de votre aide!
C'est une bonne idée mais je voudrais garder une compatibilité avec le standard...
Toutefois, si je peux "récupérer" std::allocator à partir de std::allocator<__Ty> ça pourrait être une piste, non ?
J'essaie ça :
template <class K, class T, class _Alloc = std::allocator<K> > class MyClass { template<typename __T> using Alloc = typename _Alloc::rebind<__T>::other; template<typename __T> using Layer = std::vector<__T, Alloc<__T> >; template<typename __T> using Map = Layer<Layer<__T> >; /* ... */ }
Et ça ne marche pas.
Par contre, ça :
template <class K, class T, /*, class _Alloc = std::allocator<K>*/ > class MyClass { template<typename __T> using Alloc = typename std::allocator<K>::rebind<__T>::other; template<typename __T> using Layer = std::vector<__T, Alloc<__T> >; template<typename __T> using Map = Layer<Layer<__T> >; /* ... */ }
Fait bien ce que je veux. Idem avec la version allocator_traits.
Mais l'idée c'est d'utiliser avec d'autres allocators :)
Merci de votre aide!
Franck7511
Messages postés
14296
Date d'inscription
jeudi 24 décembre 2009
Statut
Membre
Dernière intervention
10 août 2017
1 121
20 mars 2016 à 15:11
20 mars 2016 à 15:11
Up please!
Modifié par Franck7511 le 15/03/2016 à 15:56
J'ai modifié le programme en conséquence, j'ai désormais :
Mais idem, toujours une erreur... "Argument modèle non valide pour '__Alloc', type attendu
Merci