mi si avvicinò con il seguente:Passare un contenitore std a una funzione
template <typename T> inline void printcontainer(std::vector<T> container)
{
for(auto it = container.begin(); it != container.end(); it++)
{
std::cout << *it << std::endl;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
std::vector<int> v;
v.push_back(5);
v.push_back(4);
v.push_back(3);
printcontainer(v);
return 0;
}
(Ci scusiamo per l'push_backs
, Visual Studio non accetta liste di inizializzazione ... ugh !!)
ora questa funzione è limitata a std::vector
, come posso fare in modo che possa passare altri contenitori, come gli array std::list
ecc.
Quale versione di VC++ stai usando che non supporta gli elenchi di inizializzazione? – MikeMB
visual studio 2012, cose come 'std :: vector v {1,2,3};' non è supportato, quindi è necessario utilizzare la soluzione di array in stile c che io disprezzo abbastanza. Inoltre non ha 'std :: initializer_list' piuttosto strano eh. –
Esatto, sono diventato così abituato al C++ 11 che ho dimenticato che VS ha adottato molti/più? Funzionalità di C++ 11 non prima di VS 2013. – MikeMB