vector, lista, deque hanno std :: back_inserter e set ha std :: inserter.Inseritori per stack STL e priority_queue
Per stack e priority_queue, suppongo che l'inseritore equivoco sia un push() ma non riesco a trovare la funzione corretta da chiamare.
Il mio intento è quello di essere in grado di utilizzare la seguente funzione con la corretta iteratore inserto:
#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;
}
Quindi quello che stai dicendo è che non ce n'è uno standard come std :: back_inserter o std :: inserter - in breve la tua risposta è abbastanza buona e quello che sto facendo attualmente ... speravo solo che mi era sfuggito qualcosa nella stl - non mi piace srotolare la mia quando già c'è qualcosa nello stl –
@sonicoder che non conosco. Conosco solo inserti anteriori, posteriori e normali oltre a quelli di ostream. Potresti dare un'occhiata a Boost ma credo che anche questi ti lasceranno desiderare per quello di cui hai bisogno. – wheaties
Penso che dovrebbe essere: std :: iterator –