std::ref
是 C++ 标准库中的一个模板类,用于创建一个对给定对象的引用。它可以用于在函数参数中传递引用,以及在某些情况下避免不必要的复制。
使用 std::ref
可以方便地将外部对象引用传递给函数,使得函数可以直接访问和修改该对象,而不需要进行复制。这对于大型对象或者对象在多个函数之间共享时特别有用。
下面是一个简单的示例,展示了如何使用 std::ref
:
#include <iostream>
#include <functional>
int main() {
int value = 42;
// 使用 std::ref 传递引用
std::ref(value) += 10;
std::cout << "value: " << value << std::endl; // 输出:value: 52
return 0;
}
在上面的示例中,我们使用 std::ref
创建了对 value
的引用,并将其传递给 std::ref(value) += 10;
这行代码。这个操作符 +=
修改了 value
的值,而输出的结果也证明了这一点。
需要注意的是,对于 std::ref
引用的对象,应该在 std::ref
作用域结束之前保持有效。否则,当对象被销毁后,引用将变为悬空引用(dangling reference),导致未定义的行为。