为什么我的循环范围不会改变元素?
Why won't my range for loop change elements?
我使用这个for循环将字符串中的所有字母更改为x
string word{"banana"};
for (auto i : word)
i = 'x';//why does this bit fail?
cout << word;
输出应该是xxxxxx,而不是"banana",即使循环工作。
你需要像这样使用&
auto &i : word
i
在您的示例中存储了原始元素的副本,因此您对它所做的任何更改都将丢失。
注释试图告诉你的是,你的循环变量i
是初始化值意味着它的值在容器的副本,你只修改副本。
如果你通过引用初始化,它将工作
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 使用strcpy将char数组的元素复制到另一个数组
- 使用不带参数的函数访问结构元素
- C++去除前x个元素的有效方法,在不改变向量大小的情况下将第x+1个元素推到第一个
- 如何在循环中改变容器中的元素
- 改变vs中持续char*的元素
- 一个元素不能改变的非守恒向量
- 提升::p tr_向量改变元素顺序
- 为什么我的循环范围不会改变元素?
- 如果vector改变,迭代器是否指向相同的元素?或者怎么做
- 一些向量元素不会改变
- 改变一个MFC对话框元素的背景颜色
- 不能改变Cocos2d-x MenuItemToggle元素的不透明度
- 为什么矢量不改变其元素?
- 如何用键盘改变glLookat视图元素的整数值
- std::list会改变元素在内存中的位置吗?
- 在不改变索引顺序的情况下从动态数组中删除元素
- 如何洗牌一个数组,使所有元素改变它们的位置
- 在c++中,如何改变元素在一个向量中的位置,并对另一个不同的向量进行相同的改变