在迭代器领域,擦除函数需要一个迭代器,这让您在使用反向迭代器时陷入困境。如何克服这一挑战并使用反向迭代器从列表中删除元素?
根据 C 标准,反向迭代器的基数 i.base() 对应于所指向的元素之前的元素通过反向迭代器,即 &*(reverse_iterator(i)) == &*(i - 1)。
因此,要使用反向迭代器删除元素迭代器,您需要调整基本迭代器的偏移量。这可以使用以下解决方案来实现:
m_CursorStack.erase(--(i.base()));
或者,C 11 提供两个附加选项:
1。不变的反向迭代器:
m_CursorStack.erase(std::next(i).base());
2。高级反向迭代器:
std::advance(i, 1); m_CursorStack.erase(i.base());
选择最适合您要求的解决方案,使您能够轻松地从列表中删除元素,同时利用反向迭代器的便利性。
以上是如何使用反向迭代器从 C 中的列表中删除元素?的详细内容。更多信息请关注PHP中文网其他相关文章!