【发布时间】:2011-01-23 01:04:31
【问题描述】:
仅给定一个 std::string 迭代器,是否可以确定字符串的起点和终点?假设我无权访问字符串对象,因此无法调用 string.begin() 和 string.end(),我所能做的就是递增或递减迭代器并测试值。
谢谢, 菲尔
【问题讨论】:
仅给定一个 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;
}
【讨论】: