J'ai une liste de nombres. Je voudrais les imprimer sous la forme d'une liste de nombres séparés par des virgules, au plus 10 numéros par ligne. L'extrait de programme suivant met dans la liste des nombres séparés par des virgules, sans utiliser explicit pour la boucle pour itérer le vecteur des entiers, puis-je être capable d'imprimer 10 nombres au maximum par ligne?Impression d'une liste d'entiers comme une liste de nombres séparés par des virgules avec un maximum de 10 par ligne
std::vector<int> myvector;
for (int i=1; i<10; ++i) myvector.push_back(i*10);
stringstream ss;
std::copy(myvector.begin(), myvector.end(),
std::ostream_iterator<int>(ss, ", "));
cout << "list: " << ss.str() << endl;
La sortie apparaît comme (avec virgule supplémentaire à la fin):
list: 10, 20, 30, 40, 50, 60, 70, 80, 90,
J'ai trouvé une solution à mon problème d'origine:
// print at most 6 per line
int maxperline = 6;
std::vector<int>::const_iterator i1,i2,i3;
stringstream ss;
ss << "list: ";
for (i1 = myvector.begin(), i2 = myvector.end(); i1 < i2; i1+=maxperline) {
i3 = min(i2, i1+maxperline);
std::copy(i1, i3-1, std::ostream_iterator<int>(ss, ", "));
ss << *(i3-1) << '\n';
}
cout << '\n' << ss.str() << endl;
La sortie apparaît comme:
list: 10, 20, 30, 40, 50, 60
70, 80, 90
Dans cette approche, nous c Avoir une flexibilité en ayant maxperline définir comme valeur que vous désirez
algorithmes de gamme à venir pourraient être . En particulier 'view :: chunk'. – Jarod42