unique-ptr

    9热度

    3回答

    我想要一个指向我的类中的对象的指针向量。为了避免为它构造析构函数,我想使用std::unique_ptr,因为对象是在我的类中创建/拥有/析构的,但是我有一个我无法理解的编译器错误。接下来代码将作为我的问题很短的例子: std::unique_ptr<int> createPtr(int value) { std::unique_ptr<int> ptr(new int(value))

    2热度

    1回答

    我的代码如下 std::vector<std::unique_ptr<int>> v; std::unique_ptr<int> a(new int(0)); std::unique_ptr<int>& b = a; v.insert(v.begin(), std::move(b)); //ok 但是如果我在第三语句添加常量 const std::unique_ptr<int>& b =

    0热度

    3回答

    根据我最近在面试时的建议,我被建议研究C++ 11的unique_ptr功能,作为自动垃圾收集的一种手段。因此,我使用了一个较老的项目,并用unique_ptrs替换了我的原始指针,这些指针用'new'关键字创建。不过,我想我已经到了一个所有权问题。 在我的mainclass.cpp(发布如下)请注意init函数和3个unique_ptrs到我创建的新实例化对象。命名为“bg”,“bg2”和“th

    2热度

    2回答

    我使用vector<unique_ptr<Data>>来存储我的数据以进行自动内存管理并且成本较低,为unique_ptr。我有一个函数来尝试添加新的创建数据。数据可能真的被添加或不。它被添加了,我不需要关心它的内存删除,因为指针向量会照顾它。如果没有添加,我希望新创建的数据可以自动删除。任何简单的方法来实现它?该函数可能看起来像下面或其他类似的形式。谢谢。 // Return true if r

    6热度

    1回答

    将unique_ptr<char[]>移动到unique_ptr<const char[]>的最佳用法是什么? 用例:假设您在某个缓冲区中创建了一个C字符串。为确保在发生异常时进行适当的清理,该缓冲区可以是使用unique_ptr的引用。一旦字符串被构建,您可能需要将其移动到某个类成员,该成员被声明为unique_ptr<const char[]>以避免进一步修改该字符串。 这里是最好的我到目前为

    1热度

    2回答

    我有下面的代码片段,无法编译...似乎应该,但它现在回避我。非常感谢任何帮助/建议! #include <atomic> #include <memory> struct MyClass { static void free_lock(std::atomic<int>** lck) { (*lck)->store(0); } typedef std::unique_ptr<std::

    1热度

    4回答

    例如 bool read(Input &input); Input input; //error bool success = read(input); 将是一个错误,因为输入没有默认构造函数。 在这种情况下,我可以用什么技巧将输入对象从函数中取出?我想象一下,我可以得到一些unique_ptr技巧,但我不确定如何。随意建议其他方法。 请用示例说明读取函数的外观。 我宁愿不为输入创建一个

    0热度

    1回答

    我有地图上的地图如下: std::map<char,std::map<short,char>> my_maps; ,我需要一个refrence返回到对应于从功能的指定键的地图之一。 我不知道我应该怎么做,这是我的代码: bool GetMap(char key,std::unique_ptr<std::map<short,char>> my_map){ auto m=my_map

    3热度

    1回答

    我的代码如下 vector<unique_ptr<int>> v; v.insert(v.end(), new int(1)); // this is okay v.push_back(new int(1)); // this is wrong, cannot convert int* to unique_ptr<int>&& 为什么汇编(VC2010)显示的差异?谢谢。

    0热度

    1回答

    我看到,在一些奇怪的方式使用unique_ptr一些代码的怪异使用,我不知道它是否甚至法律,尽管它看起来编译在G ++罚款-std=c++0x #include <memory> #include <boost/unordered_map.hpp> typedef std::unique_ptr<std::string> str_ptr_t; typedef boost::unorder