我有一个函数,我正在传递一个迭代器和一个字符串来检查迭代器是否指向第一个元素。 但是,我得到了意想不到的结果。
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。 谁能帮我理解这个?
谢谢。
最佳答案
我传递的是浅拷贝而不是深拷贝。
这就是我得到未定义值的原因。
正确的签名:
void iteratorProperty(std::string::iterator it, std::string& str) {
关于c++ - 检查迭代器指向字符串的第一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54951575/