c++ - 对(我认为是)不可复制元素的列表进行分区
问题描述
这里是c ++的新手,我不确定要查找什么来解决这个问题,所以我在这里问。
我正在尝试使用该std::partition
功能对列表进行分区。在这样做的过程中,我打了一个电话,有点像这样:
typename std::vector<MyType>::iterator mid =
std::partition(begin, end, [xval](MyType p){return p.x <= xval;});
我要重新排序的 's 列表的开始和结束迭代器在哪里begin
和是。但是,当我这样做时,会出现以下编译错误:end
MyType
'MyType' has been explicitly marked deleted here
MyType(const MyType& src) = delete;
passing argument to parameter 'p' here
std::partition(begin, end, [xval](MyType p){return p.x <= xval;});
我已经改变了类型名称,但这是它的长短。我环顾四周,发现因为我制作了MyType
不可复制的代码,所以我的代码在抱怨,因为当我MyType p
在括号中写“”时,我显然是在将它复制到用于分区的 lambda 函数中。
我的问题是:如何在不复制参数的情况下对这个列表进行分区?我真的更希望它是这个列表而不是任何其他列表(例如,如果可以避免的话,我不想对索引列表进行分区),因为我希望此列表中的连续组满足我的谓词,以便使其他我的部分代码更容易编写。
编辑:相关部分的定义MyType
class MyType {
public:
...
MyType(const MyType& src) = delete;
MyType& operator=(const MyType& src) = delete;
MyType& operator=(MyType&& src) = default;
MyType(MyType&& src) = default;
...
float x;
}
解决方案
推荐阅读
- javascript - 弹出窗口打开时禁用正文滚动
- css - 需要显示一些 div 一个接一个地加载,使用变换或转换从上到下
- bash - 如何通过命令行根据 docker 镜像名称获取容器 id?
- ruby-on-rails - rspec 已更改 1,但已更改 2
- python - 计算多个字符串列中字符串的出现次数
- react-native - React-native ScrollView 有时会朝错误的方向滚动
- python - pygraphviz 没有属性 AGraph
- c - 当我们将数组传递给函数时,副本是如何工作的?
- angular6 - 如何转换owlDateTime 选择器格式
- bioinformatics - fastqc 使用 Snakemake