Vektor, Liste, Deque haben std :: back_inserter und Set hat std :: Inserter.Kuvertiermaschinen für STL-Stack und priority_queue
Für Stapel und priority_queue würde ich die equivelent Inserter einen push() wäre davon ausgehen, aber ich kann nicht scheinen, um die korrekte Funktion zu finden, anzurufen.
Meine Absicht ist es, die folgende Funktion mit dem richtigen Insert-Iterator in der Lage sein zu verwenden:
#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;
}
Also was Sie sagen, ist, dass es keine Standard-wie Std :: Back_Inserter oder Std :: Inserter - kurz gesagt, Ihre Antwort ist ziemlich gut und was ich gerade mache ... nur gehofft, dass ich hatte etwas in der stl verpasst - nicht mag meine eigene Ausrollen, wenn es schon etwas in der stl –
@sonicoder ist nicht, dass ich wüsste. Ich kenne nur Front-, Back- und normale Inserter neben denen von Ostream. Sie könnten sich Boost anschauen, aber ich glaube, dass sogar diese Ihnen Lust auf das geben werden, was Sie brauchen. – wheaties
Ich denke, es sollte sein: std :: iterator –