只给出一个std :: string迭代器,是否可以确定字符串的起点和终点?假设我无法访问字符串对象,因此无法调用string.begin()和string.end(),我所能做的就是递增或递减迭代器并测试值。
谢谢, 菲尔
答案 0 :(得分:6)
简短的回答是否定的。答案很长,因为预计迭代器不会知道迭代的容器或范围,所以只能预期它们
此外,某些类型的迭代器可能不仅仅是上述类型,但主要是它们都需要以某种形式执行上述操作。
答案 1 :(得分:1)
默认的std :: string :: iterator只是一个随机的双向迭代器,对容器一无所知。
但是如果你正在使用Visual C ++平台,也许你可以使用一些像下面这样的黑客方式来控制它的容器,但它非常危险:
// it is the passed in string::iterator parameter.
if (it._Has_container()) {
string* strRef = (string*)it._Mycont;
}