En C++, quel est le meilleur moyen de renvoyer une collection au code client sans utiliser d'itérateurs.Méthode générique pour renvoyer une collection entière
Supposons que les itérateurs soient exclus car, par exemple, la collection est distante. Je voudrais une signature pour une fonction qui renvoie la collection sous la forme la plus utile possible.
Par «meilleur», j'entends le meilleur compromis entre la clarté et la généricité.
Mon instinct était (où result.push_back (obj) est valide C++):
template <typename T>
void getCollection(T& result);
Je me demande si quelqu'un a de meilleures idées, par exemple qui soutiendrait également des insertions dans des conteneurs qui ne supportent pas push_back, ou qui nécessitent une transformation des objets dans la collection.
Ce qui suit, peut-être?
template <typename Func>
void getCollection(Func f); // applies f to all the objects
Peut-être que c'est juste moi, mais je ne vois vraiment, vraiment, vraiment pas quel problème vous essayez de résoudre. Qu'est-ce que push_back a à faire avec votre première option?Pourquoi ne pouvez-vous pas utiliser les itérateurs pour une collection à distance? L'interface de l'itérateur semble correspondre parfaitement à cela. Votre question est si vague que je me demande pourquoi vous ne pouvez pas faire 'template CollectionType & GetCollection()'. De quoi avez-vous besoin? –
jalf
Il y a deux choses que je ne comprends pas à la question: que voulez-vous accomplir? Pourquoi les itérateurs ne sont-ils pas la solution? Pouvez-vous clarifier - je crois que les itérateurs * sont * la solution même si je n'ai pas bien saisi la question ... –
Pourriez-vous clarifier la partie "à distance"? Je ne vois aucune connexion. – pmr