将vector <int>转换为const unique_ptr <const int []>

问题描述

如何将向量转换/复制为unique_ptr 吗?

这是我要实现的(向量起源于另一个上下文,将在复制到unique_ptr后被删除。unique_ptr具有固定长度,因此可以更有效地分配)。

std::vector<int> vv {1,2,3};

struct
    U {
        U(std::vector<int> v) { // copy constructor
            // copy vector v to unique_ptr u,HOW?
        }

        std::unique_ptr<int[]> u; 
};


U uu {vv}; // copy vector vv to unique_ptr uu,HOW?

我试图制作一个副本构造器

U(std::vector<int> v) {
    u = std::make_unique<int[]>(v.size()); // OK
    std::copy(v.begin(),v.end(),u); // error: u has no copy constructor
}

那么,我应该如何构造副本构造函数?

实际上,而且一旦构造,我希望unique_ptr 在长度和内容上都是恒定的,所以在我的情况下应该是

std::unique_ptr<int const[]> const u; // const in both length and content

在两种情况下,复制构造函数如何显示?

情况1)std :: unique_ptr u 情况2)std :: unique_ptr const u

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)