获取c+中的线程id+; 我是C++新手,我在YouTube上学习教程。 在这里我看到了这行代码: uint32_t threadID = std::hash<std::thread::id>{}(std::this_thread::get_id()); uint32_t threadID=std::hash{}(std::this_thread::get_id());

获取c+中的线程id+; 我是C++新手,我在YouTube上学习教程。 在这里我看到了这行代码: uint32_t threadID = std::hash<std::thread::id>{}(std::this_thread::get_id()); uint32_t threadID=std::hash{}(std::this_thread::get_id());,c++,C++,为什么哈希类型和thread::getid()之间有大括号?我还看到它可以被()替换。那是关于什么的?是一个函数,而不是一个函数。代码初始化临时/匿名哈希对象,然后使用调用线程的ID作为参数调用哈希对象的 因此,该代码相当于: std::hash<std::thread::id> myHashObject{}; uint32_t threadID = myHashObject(std::this_thread::get_id()); std::hash myHashObject{}

为什么哈希类型和
thread::getid()
之间有大括号?我还看到它可以被
()
替换。那是关于什么的?

是一个函数,而不是一个函数。代码初始化临时/匿名哈希对象,然后使用调用线程的ID作为参数调用哈希对象的

因此,该代码相当于:

std::hash<std::thread::id> myHashObject{};
uint32_t threadID = myHashObject(std::this_thread::get_id());
std::hash myHashObject{};
uint32_t threadID=myHashObject(std::this_thread::get_id());

卷轴只是初始化C++对象的一种新方式。

是A,不是函数。代码初始化临时/匿名哈希对象,然后使用调用线程的ID作为参数调用哈希对象的

因此,该代码相当于:

std::hash<std::thread::id> myHashObject{};
uint32_t threadID = myHashObject(std::this_thread::get_id());
std::hash myHashObject{};
uint32_t threadID=myHashObject(std::this_thread::get_id());

卷轴只是初始化C++对象的一种新方式。

< P> <代码>:ST::Hash < /C>是一种类型。我们需要一个这种类型的对象来进行实际的哈希运算。因此,
{}
(或
()
)正在创建该类型的临时对象。然后,包含
std::this_thread::get_id()
的括号表示我们正在调用该对象上的
操作符()

std::hash
是一种类型。我们需要一个这种类型的对象来进行实际的哈希运算。因此,
{}
(或
()
)正在创建该类型的临时对象。然后,包含
std::this_thread::get_id()
的括号表示我们正在调用该对象上的
运算符()

为了澄清一点,
threadID
是该变量的错误名称。它应该是散列的线程id,或者类似的东西。它不是线程id。当我在挑选代码时,
std::hash::operator()
的返回类型是
std::size\u t
,它不一定是
uint32\u t
。为了澄清一点,
threadID
是该变量的错误名称。它应该是散列的线程id,或者类似的东西。它不是线程id。当我挑选代码时,
std::hash::operator()
的返回类型是
std::size\t
,它不一定是
uint32\t