给定一个指向 s 的指针容器int
,如何在int
不使用*
循环体中的取消引用运算符的情况下增加 s {}
?
这是在循环体中使用取消引用运算符的实现:
#include <vector>
#include <iostream>
using namespace std;
int main() {
int x = 0, y = 1, z = 2;
auto increment_elements = [](vector<int*>& v) {
for (auto& i : v) { ++*i };
};
increment_elements(vector<int*>{&x, &y, &z});
cout << x << ", " << y << ", " << z << endl;
}
更换
for (auto& i : v) { ++*i };
和
for (int& i : v) { ++i };
给 MSVC-2013
error C2440: 'initializing' : cannot convert from 'int *' to 'int &'
.
为什么替换为
for (auto& i : v) { ++i };
编译但不增加int
s,它在做什么?
我对替换有同样的问题
for (int*& i : v) ++i;
这给出了相同的结果。