【发布时间】:2015-07-07 14:04:00
【问题描述】:
我有以下代码
#include <iostream>
#include <vector>
#include <functional>
int main() {
std::vector<double> v(5, 10.3);
std::vector<double>& r = v;
//std::vector<std::reference_wrapper<double>> r(v.begin(),v.end());
for (auto& i : v)
i *= 3;
for (auto i : r)
std::cout << i << " ";
std::cout << std::endl;
}
我正在使用“&”运算符对向量“r”的引用,在我注释掉的第二行中,我正在使用 C++ 的 std::reference_wrapper。两者都做几乎相同的工作?但我认为制作 std::reference_wrapper 必须有一个目的,即使我们有 '&' 来完成这项工作。谁能解释一下?
【问题讨论】:
-
做
r.resize(200),你会看到不同之处——一个指的是向量,其他指的是doubles。 -
&这里不是运算符。