草庐IT

unique_random_numbers

全部标签

c++ - 有什么方法可以初始化 unique_ptr 的 vector 吗?

例如structA{vector>m_vector{make_unique(1),make_unique(2)};};我尝试了以上但失败了。有什么方法可以初始化unique_ptr的vector? 最佳答案 您不能从初始化列表中移动,因为元素是const.§8.5.4[dcl.init.list]/p5:Anobjectoftypestd::initializer_listisconstructedfromaninitializerlistasiftheimplementationallocatedanarrayofNelement

c++ - 当我们在 vector 上使用 unique 函数时,移位是如何工作的?

所以,我目前正在阅读一些c++的东西,我在cppreference上看到了这个例子,但我不明白转变是如何工作的。#include#include#includeintmain(){std::vectorv{1,2,2,2,3,3,2,2,1};std::vector::iteratorlast;last=std::unique(v.begin(),v.end());//123213221//^for(std::vector::iteratorit=v.begin();it!=last;++it){std::cout我知道当我们使用unique时它会改变事情,但是我不确定我们如何获得从l

c++ - clang,返回带有类型转换的 std::unique_ptr

这是我的代码:#includestructA{};structB:A{};std::unique_ptrtest(){autop=std::make_unique();returnp;}intmain(intargc,char**argv){test();return0;}它不会在clang上编译并出现错误:main.cpp:11:12:error:noviableconversionfromreturnedvalueoftype'unique_ptr>'tofunctionreturntype'unique_ptr>'然而,根据this(同样的情况)应该。我是不是误会了什么?我的命令

c++ - 从 Qt 5.6 切换到 Qt 5.7 - 命名空间 std 中的 "no member ' make_unique'

我有一个CMakeQt项目,它使用了多个c++14功能,包括std::make_unique。通常这将通过以下方式处理:LIST(APPENDCMAKE_CXX_FLAGS-std=c++14)或ADD_COMPILE_OPTIONS(-std=c++14)我想将项目从5.6版升级到5.7版,但在测试构建期间出现多次失败并出现错误nomember'make_unique'innamespacestd我已验证所有适当的header和编译选项都已到位,并排除了任何环境问题。使用Qt5.7绝对是个问题。有什么解决方法吗? 最佳答案 原来这

c++ - unique_ptr vs 类实例作为成员变量

有一个类SomeClass,它包含一些数据和操作这些数据的方法。并且必须使用一些参数创建它,例如:SomeClass(intsome_val,floatanother_val);还有另一个类,比如Manager,它包括SomeClass,并大量使用它的方法。那么,在性能(数据局部性、缓存命中等)方面会更好,将SomeClass的对象声明为Manager的成员并使用成员初始化在Manager的构造函数中或将SomeClass的对象声明为unique_ptr?classManager{public:Manager():some(5,3.0f){}private:SomeClasssome;

c++ - 任何类型的 unique_ptr 的 static_assert

我如何静态断言表达式是std::unique_ptr即std::unique_ptr对于任何T.static_assert(std::is_pointer()),"notasmartpointer")以上无效。如果没有什么直截了当的,我只对bool()感兴趣运算符是为类型定义的。 最佳答案 通过适当的部分特化创建您自己的特征:templatestructis_unique_ptr:std::false_type{};templatestructis_unique_ptr>:std::true_type{};

c# - 在 C++ 中模拟 C# Random()(相同的数字)

有没有办法在C++中实现C#Random()类?我特别需要根据给定的种子生成相同的数字序列。场景:我正在努力通过利用C#中Random()的使用来生成key来“破解”几个加密恶意软件。显然,这对于只有2^32个可能的key,~4.3B个key来说是弱的,这在猜测的可能性范围内。我用C#编写了暴力破解器,但无论我优化多少,它们都相当慢。我想在C++中实现一个bruteforcer以获得最佳效率(“更接近硬件”),因为我可以通过解密部分获得更好的速度优化(例如AES-256通常,将来甚至可以利用GPU),并以指数方式获得更好的输出。显然,Random(seed)!=srand(seed),

c++ - 使用普通函数删除器构建 std::unique_ptr 的包装器

我正在尝试实现一个可以像这样使用的std::unique_ptr工厂:autofd=my_make_unique(fopen("filename","r"));即,将删除函数作为模板参数传递。我在C++11中的最佳尝试是:templatestructDeleter{voidoperator()(P*ptr){deleter(ptr);}};templatestd::unique_ptr>my_make_unique(P*ptr){returnstd::unique_ptr>(ptr);}在C++14中它更简洁:templateautomy_make_unique(P*ptr){stru

c++ - 复制构造函数中初始化列表中的 make_unique 是不使用 noexcept 说明符的良好目的吗?

我的复制构造函数旁边有一个noexcept说明符。#include#includeclassFoofinal{public:Foo()noexcept=default;Foo(constFoo&oth):impl_(std::make_unique()){}//impl_;};classFoo::Impl{...private:std::vectorsome_data;}当std::make_unique可以抛出bad_alloc时,我不确定是否应该将noexcept放在复制构造函数旁边。我们将不胜感激! 最佳答案 cpp编码指南在

【LeetCode力扣】单调栈解决Next Greater Number(下一个更大值)问题

目录1、题目介绍2、解题思路2.1、暴力破解法2.2、经典NextGreaterNumber问题解法1、题目介绍原题链接:496.下一个更大元素I-力扣(LeetCode)示例1:输入:nums1=[4,1,2],nums2=[1,3,4,2].输出:[-1,3,-1]解释:nums1中每个值的下一个更大元素如下所述:-4,用加粗斜体标识,nums2=[1,3,4,2]。不存在下一个更大元素,所以答案是-1。-1,用加粗斜体标识,nums2=[1,3,4,2]。下一个更大元素是3。-2,用加粗斜体标识,nums2=[1,3,4,2]。不存在下一个更大元素,所以答案是-1。实例2:输入:nums