草庐IT

unique_random_numbers

全部标签

c++ - 将 std::unique_ptr 转换为 std::unique_ptr 到父类(super class)的正确方法是什么?

假设我有一个名为foo的类它继承自一个名为bar的类.我有一个std::unique_ptr到foo的实例我想将它传递给一个只接受std::unique_ptr的函数.我怎样才能转换指针以便它在我的函数中工作? 最佳答案 您可以转换std::unique_ptr右值std::unique_ptr:std::unique_ptrf(newfoo);std::unique_ptrb(std::move(f));显然,指针将由b拥有如果b被摧毁bar需要有一个virtual析构函数。 关于c+

c++ - 数组中的魔数(Magic Number)? - C++

我是一个相当新的程序员,如果这些信息很容易获得,我深表歉意,我只是还没有找到它。这是我的问题:当您使用文字数字访问数组的特定元素时,是否被视为魔数(MagicNumber)?例如:arrayOfNumbers[6]//Issixamagicnumberinthiscase?我问这个问题是因为我的一位教授坚持认为程序中的所有文字数字都是魔数(MagicNumber)。如果我只使用实数访问数组的元素,而不是为每个元素使用命名常量,这对我来说会很好。谢谢! 最佳答案 这真的取决于上下文。如果您有这样的代码:arr[0]="Long";ar

c++ - std::unique_ptr<T[]>::reset 在 gcc 6 中的实现

从C++中的GCC6开始,unique_ptr::reset的声明/定义方法(不是那个,只接受nullptr_t)看起来像这样:template,__and_,is_pointer,is_convertible::type(*)[],element_type(*)[]>>>>>voidreset(_Up__p)noexcept{usingstd::swap;swap(std::get(_M_t),__p);if(__p!=nullptr)get_deleter()(__p);}这在某些时候已更改以实现N4089.根据该文件:Thisfunctionbehavesthesameasthe

IMX6ULL开发板在查看ip时出现 random:crng init done

         本人使用的是百问网韦东山老师的imx6ullmini开发板,在设置好双网卡后,Windows和ubuntu可以互相ping通,但是在MobaXterm的串口下查看开发板ip时,在输入ifconfig命令后,出现random:crnginitdone语句。                在百度过后,明白了这句不是错误的意思,原因是random设备初始化太慢,应用程序调用random的函数时可能被阻塞。        因systemd在系统启动时需要熵信息,且内核在可用熵较少时会阻塞相应的调用,所以系统启动时可能挂起数分钟至数小时,直至随机子系统充分得到初始化(random:cr

c++ - 使用 unique_ptr 进行依赖注入(inject)以模拟

我有一个使用Bar类的Foo类。Bar仅在Foo中使用,而Foo正在管理Bar,因此我使用unique_ptr(不是引用,因为我不需要Foo之外的Bar):usingnamespacestd;structIBar{virtual~IBar()=default;virtualvoidDoSth()=0;};structBar:publicIBar{voidDoSth()override{coutbar):bar_(std::move(bar)){}voidDoIt(){bar_->DoSth();}private:unique_ptrbar_;};目前一切顺利,一切正常。但是,当我想对代

c++ - std::make_unique、匿名命名空间和 ODR

请考虑以下测试用例(从LLVM源减少)://%catfoo1.cpp#includenamespace{classA{inti;};}classG{std::unique_ptrfoo()const;};std::unique_ptrG::foo()const{returnstd::make_unique();}和//%catfoo2.cpp#includenamespace{classA{boola;};}classH{std::unique_ptrbar()const;};std::unique_ptrH::bar()const{returnstd::make_unique();}

c++ - 有没有办法检查 std::random_device 是否实际上是随机的?

引自cppreference:std::random_deviceisanon-deterministicrandomnumberengine,althoughimplementationsareallowedtoimplementstd::random_deviceusingapseudo-randomnumberengineifthereisnosupportfornon-deterministicrandomnumbergeneration.有没有办法检查当前的实现是否使用PRNG而不是RNG(然后说错误退出),如果没有,为什么不呢?请注意,一点谷歌搜索表明至少MinGW以这种方

c++ - 为什么 make_unique 有一个可以将 std::bind 作为参数的构造函数的额外移动?

我有一个简单的类,它的构造函数如下所示:Event(std::function&&f):m_f(std::move(f)){}构造函数可以与std::bind一起使用:Thingthing;std::unique_ptrev(newEvent(std::bind(some_func,thing)));以上述方式使用它会导致“事物”的一个拷贝构造,然后在该拷贝上进行移动构造。但是,执行以下操作:std::unique_ptrev=make_unique(std::bind(some_func,thing));导致两个移动结构。我的问题是:什么时候调用“thing”的移动构造函数为什么用m

c++ - 在 C++/CLI 中使用 unique_ptr 时出现链接器错误

我目前正在转换我的auto_ptr实例至unique_ptr,但我遇到了一个问题。它在代码的C++部分工作得很好,但在我的托管C++/CLI层(该软件同时使用C#和C++)中执行它时,我遇到链接错误。它编译得很好,但在链接时会中断。auto_ptr从来没有任何问题.我目前正在使用VisualStudio2010。有人知道使用unique_ptr时遇到的任何问题吗?在C++/CLI中?我试图在下面的一段代码中总结我的问题,但请注意下面的代码实际上可以编译和工作(我检查了指针的所有权是否正确移动).编译时我没有收到链接错误,但下面的代码是纯C++而不是C++/CLI。我只是想提供一个代码构

c++ - 如何传递 unique_ptr<T> 代替原始 *output* 指针参数?

我在外部库中有一个预先存在的函数,它看起来像这样;boolCreateTheThing(MyThing*&pOut);简而言之;我给它一个原始指针(通过引用),函数分配内存并将我的指针分配给新分配的对象。当函数返回时,我有责任在我完成后释放内存。显然,我想将此结果存储到unique_ptr中,并避免使用手册delete.我可以创建一个临时原始指针以用于API调用,并将其传递到unique_ptr的构造函数中;MyThing*tempPtr;CreateTheThing(tempPtr);unique_ptrrealPtr=unique_ptr(tempPtr);还有比这更直接的方法吗?