在 C++11 中std::map
,是否有一些有效的迭代器x这样 ++x保证等于map::begin()
?我想检测我刚刚调用的函数(我的)是否已将迭代器从函数的前面移走。该函数会将迭代器向后移动一位。
这个答案适用于图书馆的其他部分吗?
不,迭代器位于开头之前std
容器都是UB(除了反向迭代器,这可能无法解决你的问题)。
您可能需要修复有问题的功能。如果做不到这一点,请在调用它之前将其包装并捕获不良行为。如果做不到这一点,您可以将负无穷大元素插入到map
键类型排序,并添加哨兵值。如果做不到这一点,您可以编写迭代器适配器来包装您的map
迭代器可以在没有 UB 的情况下从一开始。
这些大致是按照我推荐的顺序排列的。每个都有可能失败的方式,并且随着我的建议变得越来越遥远,它们变得更容易出错和危险。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)