循环范围在使用索引元素时不起作用
Range for loop doesn't work when operating with an indexed element
我不确定如何构建标题,但解释更简单。我正在玩c++11范围for循环(链接)。
我写了以下内容:
for(auto &elem:vec){
elem/=vec[0];
}
编译但不改变向量'vec'中的任何内容。
另一方面,这是有效的:
elem0 = vec[0];
for(auto &elem:vec){
elem/=elem0;
}
这是预期的吗?第一种方法有什么问题?如果有帮助,我的编译器版本是g++ 4.6.3。
实际上它工作得很好,除了,在您的示例中,vec[0]
在第一次运行后已更改为1
,这使得剩余的运行看起来像"不工作"(如果除以1
,保持相同的值)。
您将通过使用以下示例清楚地看到它(将"as expected"):
vector<float> vec = { 1, 2, 3, 4, 5 };
for (auto &elem : vec){
elem /= vec[4];
}
// now vec={0.2, 0.4, 0.6, 0.8, 1.0}
相关文章:
- 为什么使用数组元素查找最大数字的程序不起作用?
- C++ 函数,用于查找数组中四个最小最大元素的总和不起作用
- C++:矩阵高斯消除不起作用:使用单维数组来存储元素
- 从数组中删除元素不起作用的函数
- 双链接列表添加元素不起作用,不知何故它总是保持为空
- 如果 x,递归不起作用,我的函数只能删除第一个元素
- 尝试读取数据文件,存储在数组中并打印所有元素,但它不起作用
- 在C++中实现二叉搜索树,搜索不起作用.尝试打印节点的元素会导致输出崩溃
- 使用 std::move 在开始时插入矢量的中间元素不起作用
- 将列表元素移动到列表末尾的函数多次不起作用
- 如何通过长度从 std::vector 中删除元素<string>(擦除不起作用)
- 为什么此C 代码不起作用 - 试图删除集合中的元素时,请参考错误
- 当中间元素选择为枢轴时,快速排序C 不起作用
- 元素向量乘法 C++(代码不起作用)
- 在我试图创建一个载体中包含C 中的唯一元素的矢量时,发现不起作用
- 当通过引用传递时,通过传递链表在第n个位置添加元素不起作用
- 我正在尝试使我的 2-D 数组程序获取每行中最大的元素,但它不起作用
- 为什么当我放置偶数个元素时我的程序不起作用
- 运算符 类对象的重载在访问包含它的向量元素时不起作用
- 用于移动不起作用的数组元素的函数