c++ - 检查迭代器指向字符串的第一个元素

标签 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。 谁能帮我理解这个?

谢谢。

最佳答案

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

这就是我得到未定义值的原因。

正确的签名:

void iteratorProperty(std::string::iterator it, std::string& str) {

关于c++ - 检查迭代器指向字符串的第一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54951575/

相关文章:

c++ - 为什么添加空格会使编译器进入无限循环?

c++ - 在多线程应用程序中安全使用迭代器

java - 无法从 JNI 设置 Java int 数组字段

c++ - 在 const 方法中修改指针值

java - 如何删除 Java 中单个单词后面的所有标点符号?

c - 程序收到信号 : “EXC_BAD_ACCESS” ?

java - Eclipse 错误无法解析为类型

java - Iterable#iterator() 返回一个新的迭代器还是一个现有的迭代器?

c++ - VirtualBox - 如何编写驱动程序/插件?

python - 在Python中,如何对包含重音符号的数据框进行排序?