【发布时间】:2020-03-30 18:08:41
【问题描述】:
我正在尝试解决 C++ 中的一个问题,其中一部分需要我使用 rbegin() 成员函数从向量中擦除元素。但是,每次我编写下面提到的代码时,编译器都会抛出一个错误。这里有什么问题?
int main() {
int a = 1, b = 2;
vector<int> V = {a, b};
auto it = V.rbegin();
V.erase(it);
return 0;
}
但是,如果我使用 begin() 成员函数访问相同的元素,它编译得很好。下面的代码工作正常。
int main() {
int a = 1, b = 2;
vector<int> V = {a, b};
auto it = V.begin()+1;
V.erase(it);
return 0;
}
【问题讨论】:
-
您收到的错误是什么?它应该立即解释这个问题。具体来说,我不相信有一个接受
reverse_iterator的vector::erase重载 - 只有一个接受iterator的重载。 -
看看here。你会看到
erase自 c++11 起只接受const_iterator -
这能回答你的问题吗? How to call erase with a reverse iterator
-
谢谢丘瑞尔。不知道这个东西
标签: c++ vector iterator erase reverse-iterator