C++。如何以“(元素,元素,元素)”格式输出 std::set 中没有最后一个“,”的元素?

C++.How output elements from std::set in format "(element, element, element)" without last ", "?

当我使用 std::list 时,我有方法 "back()":

for ( it = list->begin(); it != list.back(); it++ ) {
   cout << it.getName() << ", ";
}
cout << it.getName() << endl;

output: (element, element, element)

std::set 没有成员 back(),没有 ", " 我无法输出最后一个元素:

output: (element, element, element, )

这足以满足大多数用途:

for (auto it = list.begin(); it != list.end(); ++it)
{
   if (it != list.begin()) cout << ", ";
   cout << it->getName();
}

如果您想要 ( ) 围绕输出,只需在循环的任一侧添加 couts。

如果您热衷于将条件语句排除在循环之外:

if (!list.empty())
{
     auto it = list.begin();
     cout << it->getName();
     while (++it != list.end())
         cout << ", " << it->getName();
}