一千萬個為什麽

搜索

如何檢測叠代容器的第一個或最後一個元素?

如何以更時尚/更短的方式做到以下幾點?

for(i=container.begin(); i!=container.end(); ++i) {
    if (i!=container.begin()) {
        cout << ", ";
    }
    cout << *i;
    j=i;
    if (++j==container.end()) {
        cout << "!" << endl; 
    }
}

foreach 這樣的解決方案是可以接受的(首先是但是,最後元素需要是可配置的。

附: 有許多答案正在處理第一個元素,但不是最後一個。這就是處理最後一個元素的意思:

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;
    }
}

您是否認為在循環體外處理第一個元素非常容易?真正的問題是最後一個問題!我很抱歉無法澄清提出這個問題的重點。我想我最終會接受排名靠前的答案。

最佳答案

暫時沒有最佳答案

轉載註明原文: 如何檢測叠代容器的第一個或最後一個元素?