Как сделать следующее более стильно / коротко?
for(i=container.begin(); i!=container.end(); ++i) {
if (i!=container.begin()) {
cout << ", ";
}
cout << *i;
j=i;
if (++j==container.end()) {
cout << "!" << endl;
}
}
Допустимы такие решения, как foreach (хотя действия над первым и последним элементами должны быть настраиваемыми).
P.S.
Есть много ответов, которые обрабатывают первый элемент, но не последний. Вот что я имею в виду под обработкой последнего элемента:
for(i=container.begin(); i!=container.end(); ++i) {
j=i;
if (i==container.begin()) {
cout << "[" << *i << "]" << endl;
} else if (++j==container.end()) {
cout << ", (" << *i << ")" << "!" << endl;
} else {
cout << ", " << *i;
}
}
Не думаете ли вы, что очень легко обработать первый элемент вне тела цикла? Настоящая проблема - последняя! Я извиняюсь за то, что не смог уточнить важный момент, задавая вопрос. Я думаю, что в конце концов просто приму ответ высшего ранга.