-
0 votesanswersviews
std :: set中的unique_ptr找不到运算符<eventhough它在那里[重复]
可能重复:Clang,std :: shared_ptr和std :: less / operator < 所以,是的, Headers 几乎是整个问题 . 正如你从下面的片段中看到的那样,我确实实现了 operator< 所以我不知道发生了什么 . 这是代码: namespace { struct Transition { string name; StateP... -
2 votesanswersviews
在std :: vector <std :: unique_ptr <T >>中迭代const T&
我有一个这样的课: class RPNExpr { std::vector<std::unique_ptr<Expr> > m_exprs; }; m_exprs的每个元素由构建器函数进行堆分配,应该可由其他类读取,但纯粹由RPNExpr拥有,并且当RPNExpr超出范围时应该被破坏 . 对于m_exprs的读者来说,能够通过const Expr&获得迭代器会很好... -
276 votesanswersviews
从函数返回unique_ptr
unique_ptr<T> 不允许复制构造,而是支持移动语义 . 但是,我可以从函数返回 unique_ptr<T> 并将返回的值赋给变量 . #include <iostream> #include <memory> using namespace std; unique_ptr<int> foo() { unique_ptr&... -
339 votesanswersviews
如何将unique_ptr参数传递给构造函数或函数?
我很清楚如何处理构造函数或函数中的 unique_ptr 参数 . 考虑这个引用自身的类: #include <memory> class Base { public: typedef unique_ptr<Base> UPtr; Base(){} Base(Base::UPtr n):next(std::move(n)){} v... -
1 votesanswersviews
STL旋转unique_ptrs的const_iterators
我在const_iterator上通过unique_ptr中间使用std :: rotate时遇到问题 . 我试过了: std::vector<std::unique_ptr<Object> >::const_iterator middle; // middle is pointing at somewhere within vec defined elsewhere. s... -
213 votesanswersviews
make_unique和完美的转发
为什么标准C 11库中没有 std::make_unique 功能模板?我发现 std::unique_ptr<SomeUserDefinedType> p(new SomeUserDefinedType(1, 2, 3)); 有点冗长 . 以下不是更好吗? auto p = std::make_unique<SomeUserDefinedType>(1, 2, 3); ... -
-2 votesanswersviews
在容器之间移动std :: unique_ptr [重复]
这个问题在这里已有答案: Moving elements out of an associative container 3个答案 尝试在容器之间移动unique_ptrs时遇到了问题 . 我有一个std :: unordered_set被称为元素,其中包含一堆unique_ptrs . 我想将其中一些移动到另一个名为subelements的unordered_set . 我该怎么做呢? 这是... -
3 votesanswersviews
移动unique_ptr <T>的向量[重复]
这个问题在这里已有答案: Should a move constructor take a const or non-const rvalue reference? 4个答案 所以我有一种情况需要存储一个抽象类型的向量,据我所知这需要使用unique_ptrs或类似的向量 . 因此,为了移动包含unique_ptrs向量的类的实例,我需要定义一个我已经完成的移动构造函数 . 但是,如下面的示例... -
1 votesanswersviews
C传递std :: unique_ptr作为参数
我尝试使用 std::unique_ptr 实现二叉树,但出现错误,我不明白输出错误 . 代码如下: #include <iostream> #include <memory> #include <functional> #include <utility> template <typename T> class BinTreeNode... -
3 votesanswersviews
unique_ptr swap不起作用
我的代码是: #include <memory> #include <vector> struct Core{ Core(int n){} }; int main() { int base; std::vector<std::unique_ptr<Core>> cores; cores.push_back( st... -
0 votesanswersviews
无法push_back向量中的unique_ptr
我在使用此代码时出错: void Game::changeState(gameState type) // gameState is an enum { if (!states.empty()) // deleting the last state { states.back()->clean(); states.pop_back(); } ... -
1 votesanswersviews
使用带有std :: unique_ptr的静态函数删除器时出错
我有以下代码片段无法编译...似乎应该,但它现在回避我 . 非常感谢任何帮助/建议! #include <atomic> #include <memory> struct MyClass { static void free_lock(std::atomic<int>** lck) { (*lck)->store(0); } typedef std:... -
0 votesanswersviews
是否有内置深度复制功能的作用域ptr?
据我所知,如果我有一个具有boost :: scoped_ptr成员变量的类,并且如果我要复制该类的实例并希望新实例让其scoped_ptr成员指向第一个的副本实例指出,我将不得不实现一个自定义复制构造函数(和赋值运算符),并明确深入复制scoped_ptr指向的内容 . 如果智能指针类型具有自己执行此操作的复制构造函数,那将会很棒 . 在已经内置深度复制功能的c boost / stl库中是否没... -
0 votesanswersviews
包含unique_ptr的unordered_map的对象的深层副本
我有以下情况: 我需要从 A 类型创建一个变量的深(!)副本 . 此变量包含 B 类型的向量 . 类 B 不可复制,因为它包含 std::unordered_map whos值是 unique_ptr (不可复制) . 我想避免通过复制构造函数或复制赋值运算符复制 B . 一个问题是 unique_ptr 的类型只是基本类型 . 实际对象派生自 C 并包含不同的成员并具有不同的构造函数 . c... -
3 votesanswersviews
为什么我不能使用迭代器将unique_ptr从集合移动到函数参数?
我有 set 的 unique_ptr 实例,并希望将所有这些实例作为参数传递给函数 . 以下代码演示的示例 . #include <memory> #include <set> #include <vector> using std::set; using std::unique_ptr; using std::vector; void doStuff(u... -
1 votesanswersviews
将对象从unique_ptr数组移动到向量
首先,我创建一个Foo对象的unique_ptr数组 . 然后我将对象移动到矢量,如下面的代码所示 . 但是这段代码没有编译 . 另一个问题是,因为对象是使用new运算符的数组版本分配的 . 如果发生异常并且在将对象移回unique_ptr数组之前程序必须提前终止会发生什么?在这种情况下,向量vec将使用delete运算符销毁其内容,而不是删除运算符的数组版本?我们如何解决这类问题? class ... -
0 votesanswersviews
正确使用unique_ptr:emplace编译而insert会产生编译器错误(列表映射)
Context: 我正在努力学习智能指针,我遇到了一个我不明白的案例 . 我正在创建一个 unordered_map 的 unique_ptr<list<int>> . 声明如下: unique_ptr<unordered_map<uint32_t, unique_ptr<list<uint32_t>>>> mymap; ...