检查迭代器Poinitng到字符串的第一个元素

时间:2019-03-01 20:06:47

标签: c++ string iterator

我有一个函数,正在传递一个迭代器和一个字符串,以检查迭代器是否指向第一个元素。 但是,我得到了意外的结果。

int main()
{
 std::string str="abc";
 std::string::iterator strit = str.begin();
 iteratorProperty(strit, str);
}

void iteratorProperty(std::string::iterator it, std::string str) {
//std::next(it);
int count = 0;
for(auto i = it; i <str.end();i++) {

    count++;
}
std::cout<<count<<std::endl;
}

此cout语句返回的值为51。 谁能帮我理解这一点吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

我传递的是浅拷贝而不是深拷贝。

这就是为什么我得到未定义的值。

正确的签名:

%run $notebook