【问题标题】:Alternative to std::default_random_engine for Xcode?Xcode 的 std::default_random_engine 的替代方案?
【发布时间】:2015-08-03 15:02:55
【问题描述】:

我正在尝试在 Xcode 上编译我在 linux 中编写的程序以及我使用的随机函数:

std::random_device seed_device;
std::default_random_engine engine(seed_device());

但 default_random_engine 不会在 Xcode 上编译。我应该使用其他版本吗?

【问题讨论】:

  • 你从编译器得到什么样的错误信息?很有可能,当default_random_engine 不起作用时,如果没有一些修复,其他的也不会很好地工作。
  • 我用std::random_device和苹果的clang版本没有问题(更准确地说是苹果LLVM版本6.0(clang-600.0.57)(基于LLVM 3.5svn),它应该是安装了xcode的编译器6.2)。但是,这是 C++11 的功能,您确定选择了 C++11 方言(编辑:和支持 C++11 的标准库)吗? (例如见this
  • 我得到的错误是“命名空间'std'中没有名为'random_device'的类型”和“命名空间'std'中没有名为'default_random_engine'的成员”。我如何仔细检查 Xcode 是否使用 C++11?我刚刚更新了所有内容并假设它是。
  • 你包括<random>吗?
  • 废话,就是这样,谢谢。为什么 linux 中的 g++ 不需要包含它才能工作?

标签: c++ xcode random compiler-errors


【解决方案1】:

你需要#include <random>

一般来说,当编译器报错“no type named function_name in namespace std”时,你必须检查:

  • 您已包含正确的标题。您可以在任何体面的 C++ 参考资料中查找正确标题的名称。
  • 您的标准库支持 C++1x (*)(或至少支持您想要的功能)。
  • 您的编译器支持 C++1x (*)(或者至少是您想要的功能),并且如果需要,可以使用正确的标志来启用它。

(*) x 代表包含所需功能的 C++ 标准版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-15
    • 1970-01-01
    • 2019-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多