gpt4 book ai didi

c++ - 将字符 move 到字符串中会使迭代器无效吗?

转载 作者:行者123 更新时间:2023-11-30 01:07:17 24 4
gpt4 key购买 nike

因此遍历字符串并使用 operator[] 或 insert 来更改字符会使迭代器无效。

像这样的迭代也是这样吗?

std::string str = "ABCD";
for(auto&& c : str){
for(int i = 0; i < 3; ++i){
switch(c) {
case 'A':
c = 'B';
break;
case 'B':
c = 'C';
break;
/*...*/
}
//do something
}
}

此代码适用于 gcc 和 msvc,但我不知道我是否可以信任它。我正在使用 C++14。

最佳答案

您正在修改字符串的现有字符,因此它是完全安全的。当字符串存储的大小可能发生变化时,迭代器将失效,例如当您追加一个新字符时,可能需要分配一个更大的字符串缓冲区,因此所有指向先前缓冲区的迭代器都可能变得无效。

关于c++ - 将字符 move 到字符串中会使迭代器无效吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44883312/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com