姬長信(Redy)

c – “除了最后一个之外的每个”(或“每…


参见英文答案 > Printing lists with commas C++????????????????????????????????????24个
>????????????How can I check if I’m on the last element when iterating using foreach syntax ????????????????????????????????????6个
每个人都会遇到这个问题:
for(const auto& item : items) {
    cout 

…而且你得到了一个你不想要的额外分隔符.有时候它不是打印,而是执行一些其他动作,但是相同类型的连续动作需要一些分隔符动作 – 但最后一个动作不需要.

现在,如果你使用old-school for循环和数组,你会这样做

for(int i = 0; i 

(或者你可以特别说明循环中的最后一项.)如果你有任何承认非破坏性迭代器的东西,即使你不知道它的大小,你可以这样做:

for(auto it = items.cbegin(); it != items.cend(); it++) {
    cout 

我不喜欢最后两个的美学,并喜欢一系列的循环.我可以获得与最后两个相同的效果,但使用更多漂亮的C 11ish结构吗?

为了进一步扩展这个问题(超出,比如说,this one),我会说我也不想明确地说明第一个或最后一个元素的特殊情况.这是一个“实施细节”,我不想被打扰.所以,在想象中的未来-C中,可能是这样的:

for(const auto& item : items) {
    cout