gpt4 book ai didi

c++ - "Hello, World!"的 "std::ref"示例是什么?

转载 作者:IT老高 更新时间:2023-10-28 13:20:28 25 4
gpt4 key购买 nike

谁能给出一个简单的例子来演示 std::ref 的功能? ?我的意思是一个示例,其中使用了一些其他结构(如元组或数据类型模板)仅在无法解释 std::ref 时使用。没有他们。

我发现了两个关于 std::ref 的问题herehere .但在第一个中,它涉及编译器中的一个错误,在第二个中,使用 std::ref 的示例不包含 std::ref它们涉及元组和数据类型模板,这使得理解这些示例变得复杂。

最佳答案

您应该考虑使用 std::ref当一个函数:

  • 按值获取模板参数
  • 复制/移动模板参数,例如std::bindstd::thread 的构造函数.

std::ref 创建一个行为类似于引用的可复制值类型。

这个例子演示了 std::ref 的使用。

#include <iostream>
#include <functional>
#include <thread>

void increment( int &x )
{
++x;
}

int main()
{
int i = 0;

// Here, we bind increment to a COPY of i...
std::bind( increment, i ) ();
// ^^ (...and invoke the resulting function object)

// i is still 0, because the copy was incremented.
std::cout << i << std::endl;

// Now, we bind increment to std::ref(i)
std::bind( increment, std::ref(i) ) ();
// i has now been incremented.
std::cout << i << std::endl;

// The same applies for std::thread
std::thread( increment, std::ref(i) ).join();
std::cout << i << std::endl;
}

输出:

0
1
2

关于c++ - "Hello, World!"的 "std::ref"示例是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15530460/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com