有人能说出使用数组向量的正确方法是什么?
我声明了一个数组(vector<float[4]>)的向量,但error: conversion from 'int' to non-scalar type 'float [4]' requested在尝试时得到resize了.出了什么问题?
我对unique_ptr和rvalue move哲学很困惑.
假设我们有两个集合:
std::vector<std::auto_ptr<int>> autoCollection;
std::vector<std::unique_ptr<int>> uniqueCollection;
Run Code Online (Sandbox Code Playgroud)
现在我希望以下内容失败,因为没有人知道算法在内部做了什么,也许还在制作内部数据透视副本等,从而剥夺了auto_ptr的所有权:
std::sort(autoCollection.begin(), autoCollection.end());
Run Code Online (Sandbox Code Playgroud)
我明白了 并且编译器正确地不允许这种情况发生.
但后来我这样做:
std::sort(uniqueCollection.begin(), uniqueCollection.end());
Run Code Online (Sandbox Code Playgroud)
这编译.我不明白为什么.我不认为unique_ptrs可以复制.这是否意味着不能采用枢轴值,因此排序效率较低?或者这个转轴实际上是一个移动,实际上和auto_ptrs的集合一样危险,编译器应该不允许这样做?
我想我错过了一些重要的信息,所以我急切等待有人给我提供啊哈!时刻.
我有一个不可复制的类(即复制构造函数和赋值运算符被标记为'delete').我想将它们保存在std :: vector中.
它是一个RAII类,所以简单地存储指针或引用它不是我想要的.
我对新的初始化列表和移动构造函数的了解有限,这可能吗?