comment sélectionner un sous-ensemble d'un std::vector ou de la liste?

c++ gourous:

il ya tout à fait utile, c++ stl algorithmes tels que de trouver ou de recherche. Cependant, il semble qu'ils ne retournent une seule interator.

ce que si je veux faire un SQL de style 'select' pour un conteneur STL? dire, un vecteur (pourrait être étendu à la liste ou sur la carte). quelque chose comme

std::pair<vector::iterator, vector::iterator> select(std::vector::iterator begin, std::vector::iterator end, Comparor equal_to)

la sortie doit être une plage, quelque chose comme un std::pair, ce qui est similaire à la valeur de retour des méthodes de boost::multi-index

est-il quelque chose comme cela dans la stl? ou tout solide libararies similaire?

Que faire si le sous-ensemble n'est pas une ligne de sous-intervalle?
Il n'y a rien de ce genre dans la bibliothèque standard. Une option serait de boost::Plage, et spécifiquement boost::fourchette::filtré
les éléments de sortie sont censés être, le plus souvent, pas continugous
si les éléments de sortie ne sont pas contiguës, comment sur terre attendez-vous d'une paire de vector::iterator objets pour vous dire lesquels ils sont en dehors de l'ensemble de vecteur? La seule façon d'y parvenir serait de copier ou de déplacer les éléments égaux dans les parties contiguës d'un vecteur, qui vous l'ai dit ailleurs, est trop cher.
J'devraient avoir expliquer mon problème le plus précisément: je veux la sortie d'un conteneur de itérateurs, plutôt qu'un conteneur de profondément les objets copiés (qui est va être énorme)

OriginalL'auteur James Bond | 2013-11-23