小编LYF*_*Fer的帖子

为什么“L.insert(it--, i);” 与“L.insert(it, i); it--;”的行为不同吗?

这是我在 C++11 标准下运行的两段代码。我预计迭代器的后递减会产生相同的效果,但是这两段代码产生完全不同的结果。我的理解哪里出了问题?

list<int> L;

int main() {    
    L.push_back(0);
    L.push_front(1);
    auto it = L.begin();
    for (int i = 2; i <= 5; i++) {
        L.insert(it--, i);
    }
    for (auto num : L) {
        printf("%d ", num);
    }
    // 2 5 0 4 1 3
}
Run Code Online (Sandbox Code Playgroud)
list<int> L;

int main() {    
    L.push_back(0);
    L.push_front(1);
    auto it = L.begin();
    for (int i = 2; i <= 5; i++) {
        L.insert(it, i);
        it--;
    }
    for (auto num : L) {
        printf("%d ", num);
    } …
Run Code Online (Sandbox Code Playgroud)

c++ std

4
推荐指数
1
解决办法
110
查看次数

标签 统计

c++ ×1

std ×1