vector, list, deque ont std :: back_inserter et set a std :: inserter.Inserters pour STL stack et priority_queue
Pour la pile et priority_queue, je suppose que l'inséreuse équivélente serait un push() mais je n'arrive pas à trouver la fonction correcte à appeler.
Mon intention est de pouvoir utiliser la fonction suivante avec le iterator insert correct:
#include <string>
#include <queue>
#include <iterator>
template<typename outiter>
void foo(outiter oitr)
{
static const std::string s1 ("abcdefghji");
static const std::string s2 ("1234567890");
*oitr++ = s1;
*oitr++ = s2;
}
int main()
{
std::priority_queue<std::string> spq;
std::stack<std::string> stk;
foo(std::inserter(spq));
foo(std::inserter(stk));
return 0;
}
Donc, ce que vous dites, c'est qu'il n'y en a pas un standard comme std :: back_inserter ou std :: inserter - en bref, votre réponse est plutôt bonne et ce que je fais actuellement ... j'espère juste que J'avais manqué quelque chose dans la stl - n'aime pas déployer mon propre quand il ya déjà quelque chose dans la stl –
@sonicoder pas que je sache. Je ne connais que des inserters avant, arrière et réguliers en plus de ceux d'ostream. Vous pourriez regarder Boost mais je crois que même ceux-ci vous laisseront vouloir ce dont vous avez besoin. – wheaties
Je pense qu'il devrait être: std :: itérateur –