草庐IT

random_int

全部标签

c++ - std::random_device 的线程安全

我有一些看起来有点像这样的代码:std::random_devicerd;#pragmaompparallel{std::mt19937gen(rd());#pragmaompforfor(inti=0;i我有几个问题:std::random_device线程安全吗?即当多个线程同时调用它时它会做一些无用的事情吗?这通常是个好主意吗?我应该担心重叠的随机数流吗?有没有更好的方法来实现我想要的(每个线程中的独立随机数流-目前我不太担心可重复性)?如果它对std::random_device的工作有任何影响,我主要在Windows上运行,但我希望代码也能在Linux和OSX上同样良好地工作

c++ - std::random_device 的线程安全

我有一些看起来有点像这样的代码:std::random_devicerd;#pragmaompparallel{std::mt19937gen(rd());#pragmaompforfor(inti=0;i我有几个问题:std::random_device线程安全吗?即当多个线程同时调用它时它会做一些无用的事情吗?这通常是个好主意吗?我应该担心重叠的随机数流吗?有没有更好的方法来实现我想要的(每个线程中的独立随机数流-目前我不太担心可重复性)?如果它对std::random_device的工作有任何影响,我主要在Windows上运行,但我希望代码也能在Linux和OSX上同样良好地工作

c++ - C++ 中的 int64 和 int64_t 有什么区别?

我是C++和一般编码的新手。所以这个问题可能是noobish。使用类型int64或int64_t有什么区别。我看到其中一位软件开发人员在github上修改了他们的源代码,并将所有int64修改为int64_t。 最佳答案 int64_t是标准C++类型,用于正好为64位的有符号整数。int64不是标准类型。第一个C++标准没有固定宽度类型。在将int64_t添加到标准C++之前,不同的编译器都实现了64位类型,但它们使用自己的名称(例如longlong、__int64等)可能的一系列事件是,该项目最初将typedefint64为每个

c++ - C++ 中的 int64 和 int64_t 有什么区别?

我是C++和一般编码的新手。所以这个问题可能是noobish。使用类型int64或int64_t有什么区别。我看到其中一位软件开发人员在github上修改了他们的源代码,并将所有int64修改为int64_t。 最佳答案 int64_t是标准C++类型,用于正好为64位的有符号整数。int64不是标准类型。第一个C++标准没有固定宽度类型。在将int64_t添加到标准C++之前,不同的编译器都实现了64位类型,但它们使用自己的名称(例如longlong、__int64等)可能的一系列事件是,该项目最初将typedefint64为每个

c++ - 如何在 Visual Studio 上启用 __int128?

当我在VisualStudio的C++项目中键入__int128时,编辑器会将__int128的颜色更改为蓝色(类似于关键字)。但是当我编译源码时,出现以下错误:errorC4235:nonstandardextensionused:'__int128'keywordnotsupportedonthisarchitecture如何在VisualStudio上启用__int128? 最佳答案 MSDN没有将其列为可用,而最近的response同意,所以正式来说,不,没有名为__int128的类型,无法启用。此外,永远不要相信语法提示符

c++ - 如何在 Visual Studio 上启用 __int128?

当我在VisualStudio的C++项目中键入__int128时,编辑器会将__int128的颜色更改为蓝色(类似于关键字)。但是当我编译源码时,出现以下错误:errorC4235:nonstandardextensionused:'__int128'keywordnotsupportedonthisarchitecture如何在VisualStudio上启用__int128? 最佳答案 MSDN没有将其列为可用,而最近的response同意,所以正式来说,不,没有名为__int128的类型,无法启用。此外,永远不要相信语法提示符

c++ - 如何创建一个接受可变数量 int 的 C++ 构造函数

是否可以在可变参数构造函数中限制参数的类型?我希望能够表达Xx1(1,3,4);Xx2(3,4,5);//syntaxerror:identifier'Args'classX{templateX(Args...){}};//thisworksbutallowsothertypesthanintclassY{templateY(Args...){}};编辑以阐明意图:我想要实现的是将传递给构造函数的数据(编译时已知的常量)存储到静态数组中。还有其他的templatestructZ{staticintdata[sizeof...(values)];};templateintZ::data[

c++ - 如何创建一个接受可变数量 int 的 C++ 构造函数

是否可以在可变参数构造函数中限制参数的类型?我希望能够表达Xx1(1,3,4);Xx2(3,4,5);//syntaxerror:identifier'Args'classX{templateX(Args...){}};//thisworksbutallowsothertypesthanintclassY{templateY(Args...){}};编辑以阐明意图:我想要实现的是将传递给构造函数的数据(编译时已知的常量)存储到静态数组中。还有其他的templatestructZ{staticintdata[sizeof...(values)];};templateintZ::data[

c++ - 为什么 C++ 允许从 int 隐式转换为 unsigned int?

考虑以下代码:voidfoo(unsignedintx){}intmain(){foo(-5);return0;}此代码编译没有问题。像这样的错误会导致很多问题并且很难找到。为什么C++允许这样的转换? 最佳答案 简短的回答是因为C最初支持此类转换,并且他们不想破坏C++中的现有软件。请注意,某些编译器会对此发出警告。例如g++-Wconversion会对该构造发出警告。在许多情况下,隐式转换很有用,例如在计算中使用int时,但最终结果永远不会是负数(从算法中知道并且可以选择断言)。编辑:其他可能的解释:请记住,最初C是一种比现在C

c++ - 为什么 C++ 允许从 int 隐式转换为 unsigned int?

考虑以下代码:voidfoo(unsignedintx){}intmain(){foo(-5);return0;}此代码编译没有问题。像这样的错误会导致很多问题并且很难找到。为什么C++允许这样的转换? 最佳答案 简短的回答是因为C最初支持此类转换,并且他们不想破坏C++中的现有软件。请注意,某些编译器会对此发出警告。例如g++-Wconversion会对该构造发出警告。在许多情况下,隐式转换很有用,例如在计算中使用int时,但最终结果永远不会是负数(从算法中知道并且可以选择断言)。编辑:其他可能的解释:请记住,最初C是一种比现在C