首页 > 解决方案 > 通过将迭代器保存到其初始状态的最后一个元素来反转更新的向量

问题描述

我想像这样反转以下向量的更新部分:

// initialize
vector<int> a = {1, 2, 3};

将迭代器保存到最后一个元素

vector<int>::iterator e = a.rbegin();

更新

a.push_back(4);
a.push_back(5);
a.push_back(6);

现在

a = {1, 2, 3, 4, 5, 6}

我想把它改造成

a = {1, 2, 3, 6, 5, 4}

下面的代码打印出3 6这是我所期望的

cout << *e <<  ' ' << *a.rbegin() << endl;

但下面的代码打印4 3 2 1 0 3

reverse(a.rbegin(), e + 1);
for (auto it : a) cout << it << ' ';

为什么?!

编译标志:-g,-std=c++17

标签: c++iteratorreversestdvector

解决方案


推荐阅读