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