Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么我会被抛弃?(Cpp代码) 字符串s; cin>>s; 字符串::迭代器; it=s.begin(); s、 推回(“0”); s、 抹去(它); 在将0添加到末尾后,是否尝试分配迭代器 string s; cin>>s; string::iterator it; it=s.begin(); s.push_back('0'); s.erase(it); cout<<s<<endl; 字符串s; cin>>s; s、 推回(“0”); 字符串::迭代器; it=s.begin(); s、 抹去(它); 在将0添加到末尾后,是否尝试分配迭代器 string s; cin>>s; string::iterator it; it=s.begin(); s.push_back('0'); s.erase(it); cout<<s<<endl; 字符串s; cin>>s; s、 推回(“0”); 字符串::迭代器; it=s.begin(); s、 抹去(它); cout_C++ - Fatal编程技术网

C++ 为什么我会被抛弃?(Cpp代码) 字符串s; cin>>s; 字符串::迭代器; it=s.begin(); s、 推回(“0”); s、 抹去(它); 在将0添加到末尾后,是否尝试分配迭代器 string s; cin>>s; string::iterator it; it=s.begin(); s.push_back('0'); s.erase(it); cout<<s<<endl; 字符串s; cin>>s; s、 推回(“0”); 字符串::迭代器; it=s.begin(); s、 抹去(它); 在将0添加到末尾后,是否尝试分配迭代器 string s; cin>>s; string::iterator it; it=s.begin(); s.push_back('0'); s.erase(it); cout<<s<<endl; 字符串s; cin>>s; s、 推回(“0”); 字符串::迭代器; it=s.begin(); s、 抹去(它); cout

C++ 为什么我会被抛弃?(Cpp代码) 字符串s; cin>>s; 字符串::迭代器; it=s.begin(); s、 推回(“0”); s、 抹去(它); 在将0添加到末尾后,是否尝试分配迭代器 string s; cin>>s; string::iterator it; it=s.begin(); s.push_back('0'); s.erase(it); cout<<s<<endl; 字符串s; cin>>s; s、 推回(“0”); 字符串::迭代器; it=s.begin(); s、 抹去(它); 在将0添加到末尾后,是否尝试分配迭代器 string s; cin>>s; string::iterator it; it=s.begin(); s.push_back('0'); s.erase(it); cout<<s<<endl; 字符串s; cin>>s; s、 推回(“0”); 字符串::迭代器; it=s.begin(); s、 抹去(它); cout,c++,C++,修改字符串会使从该字符串生成的任何迭代器无效 从技术上讲,只有当字符串重新调整大小时,它们才会无效。 但是,除非您采取明确的预防措施来防止字符串重新调整大小,否则您必须假设,当您向字符串添加增加大小的内容时,任何迭代器都是无效的 见:www.sgi.com/tech/stl/basic_string.html 注意到,根据C++标准,Basic字符串具有非常不寻常的迭代器失效语义。迭代器可能因交换、保留、插入和擦除(以及与插入和/或擦除等效的函数,如清除、调整大小、追加和替换)而无效 然而,除此

修改字符串会使从该字符串生成的任何迭代器无效

从技术上讲,只有当字符串重新调整大小时,它们才会无效。
但是,除非您采取明确的预防措施来防止字符串重新调整大小,否则您必须假设,当您向字符串添加增加大小的内容时,任何迭代器都是无效的

见:www.sgi.com/tech/stl/basic_string.html

注意到,根据C++标准,Basic字符串具有非常不寻常的迭代器失效语义。迭代器可能因交换、保留、插入和擦除(以及与插入和/或擦除等效的函数,如清除、调整大小、追加和替换)而无效

然而,除此之外,对任何非常量成员函数的第一次调用,包括begin()或运算符[]的非常量版本,都可能使迭代器无效。(这些迭代器失效规则的目的是让实现者在实现技术上有更大的自由。)在这个实现中,begin()、end()、rbegin()、rend()、operator[]、c_str()和data()不会使迭代器失效


修改字符串会使从该字符串生成的任何迭代器无效

从技术上讲,只有当字符串重新调整大小时,它们才会无效。
但是,除非您采取明确的预防措施来防止字符串重新调整大小,否则您必须假设,当您向字符串添加增加大小的内容时,任何迭代器都是无效的

见:www.sgi.com/tech/stl/basic_string.html

注意到,根据C++标准,Basic字符串具有非常不寻常的迭代器失效语义。迭代器可能因交换、保留、插入和擦除(以及与插入和/或擦除等效的函数,如清除、调整大小、追加和替换)而无效

然而,除此之外,对任何非常量成员函数的第一次调用,包括begin()或运算符[]的非常量版本,都可能使迭代器无效。(这些迭代器失效规则的目的是让实现者在实现技术上有更大的自由。)在这个实现中,begin()、end()、rbegin()、rend()、operator[]、c_str()和data()不会使迭代器失效


那么它是否编译?您发布的是一个编译器错误。@H2CO3我认为编译器错误只是将Codepad用作公共剪贴板而没有发布完整代码的结果。删除-我的错。那么它是否编译?您发布的是一个编译器错误。@H2CO3我认为编译器错误只是将Codepad用作公共剪贴板而没有发布完整代码的结果。删除-我的错。@在重复数据时按喇叭修改数据通常是不安全的,但我不能肯定。我同意。这里的解释可能会有很大帮助。C++11 21.4.1-p6,引用基本字符串序列元素的引用、指针和迭代器可能会因以下使用该基本字符串对象而无效:-作为任何标准库函数的参数,将对非常量基本字符串的引用作为参数;-调用非常量成员函数,除了操作符[]、at、front、back、begin、rbegin、end和rend符合非常量成员的资格。@WhozCraig,是的,并且也可能发生内存重新分配,使迭代器无效。无论哪种方式,它都是不好的和不可靠的。@在对数据进行迭代时按喇叭修改数据通常是不安全的,但我不能肯定。。我同意。这里的解释可能会有很大帮助。C++11 21.4.1-p6,“引用基本_字符串序列元素的引用、指针和迭代器可能因以下使用该基本_字符串对象而无效:-作为任何标准库函数的参数,将对非常量基本_字符串的引用作为参数;-调用非常量成员函数,运算符[]、at、front、back、begin、rbegin、end和rend除外。“我相信
push_back()
符合非常量成员的条件。@WhozCraig,是的,还可能发生内存重新分配,使迭代器无效。无论哪种方式,它都是不好的和不可靠的。