Обычно, когда мне приходилось отображать список разделенных строк, я делал что-то вроде:
using namespace std;
vector<string> mylist; // Lets consider it has 3 elements : apple, banana and orange.
for (vector<string>::iterator item = mylist.begin(); item != mylist.end(); ++item)
{
if (item == mylist.begin())
{
cout << *item;
} else
{
cout << ", " << *item;
}
}
Что выдает:
apple, banana, orange
Я недавно обнаружил std::ostream_iterator
, которыйесли найден действительно хорошим для использования.
Однако со следующим кодом:
copy(mylist.begin(), mylist.end(), ostream_iterator<string>(cout, ", "));
Если получится:
apple, banana, orange,
Почти идеально, за исключением дополнительного ,
,Есть ли элегантный способ обработки специального «первого (или последнего) случая элемента» и получения того же результата, что и первого кода, без его «сложности»?