<mytype>使用 C++11 for() 循环遍历 vector<unique_ptr>
Iterating through vector<unique_ptr<mytype>> using C++11 for() loops
我得到了以下一批代码:
std::vector<std::unique_ptr<AVLTree_GeeksforGeeks>> AVLArray(100000);
/* Let's add some objects in the vector */
AVLTree_GeeksforGeeks *avl = new AVLTree_GeeksforGeeks();
avl->Insert[2]; avl->Insert[5]; AVL->Insert[0];
unique_ptr<AVLTree_GeeksforGeeks> unique_p(avl);
AVLArray[0] = move(unique_p);
/* we do this for a number of other trees, let's say another 9...
...
...
Now the vector has objects up until AVLTree[9] */
/* Let's try iterating through its valid, filled positions */
for(auto i : AVLTree )
{
cout << "Hey there!n"; //This loop should print 10 "Hey there"s.
}
鲁在for()循环的最后一部分出现编译错误。
DataStructures2013_2014main.cpp||In function 'int main()':|
DataStructures2013_2014main.cpp|158|error: use of deleted function 'std::unique_ptr<_Tp, _Dp>::unique_ptr(const std::unique_ptr<_Tp, _Dp>&) [with _Tp = AVLTree_GeeksforGeeks; _Dp = std::default_delete<AVLTree_GeeksforGeeks>; std::unique_ptr<_Tp, _Dp> = std::unique_ptr<AVLTree_GeeksforGeeks>]'|
e:codeblocksmingwbin..libgccmingw324.7.1includec++bitsunique_ptr.h|256|error: declared here|
||=== Build finished: 2 errors, 0 warnings (0 minutes, 0 seconds) ===|
你知道我做错了什么吗?
循环
for (auto i: AVLTree) { ... }
尝试对CCD_ 1和CCD_。当然,std::unique_ptr<T>
是不能复制的:每个指针只有一个std::unique_ptr<T>
。它不会真的复制任何东西,而是偷它。那太糟糕了。
您想使用引用:
for (auto& i: AVLTree) { ... }
或者,如果你不修改它们
for (auto const& i: AVLTree) { ... }
相关文章:
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 呼叫运营商<<临时
- 如何防止clang格式在流运算符调用之间添加换行符<<
- <<操作员在下面的行中工作
- EASTL矢量<向量<int>>连续的
- C - 创建矢量&lt; vector&lt; double&gt;&gt;矩阵具有分配而不是inizializ
- 为什么将此对向量&lt; map&lt; int,int&gt;&gt;中的地图进行更新.失败
- C :对矢量进行排序&lt; struct&gt;(结构有2个整数)基于结构的整数之一
- 明确的专业化“ CheckIntmap&lt;&gt;”实例化
- 什么是模板&lt;&gt;inline bla bla
- 编辑C Qlist&lt; object*&gt; gt;QML代码和一些QML警告中的模型
- eigen :: llt&lt;eigen :: matrixxd&gt;具有不完整的类型
- 错误,包括&lt; ctype&gt;在原子上使用C 11
- std::vector<;uint8_t>;当C++11/14启用时,手动复制而不是调用memcpy
- 如何加入向量&lt; int&gt;到C 中的单个INT
- 是std :: set&lt; std :: future&gt;不可能存在
- 是numeric_limits&lt; int&gt; :: is_modulo从逻辑上矛盾
- opencv 2.4.7在iOS错误背景_segm.hpp #include&lt; list&gt;未找到
- 在修改列表后,std :: list&lt; t&gt; :: end()的值是否会更改
- ///<评论></评论>在Visual Studio中