|
|
1
2
|
|
|
2
2
你需要的是一个
下面的函数返回一对范围,其中包含由(first1,last1)表示的范围与由(first2,last2)表示的范围之间的差的结果。一个先决条件是,first1必须位于first2之前或与first2相同的位置。
在本例中,函数返回(first1,first2),(last2,last1)。 在另一种配置中,
函数返回(first1,last1),(first2,first2)。还有许多其他可能的配置。然而,需要知道的一件重要事情是,在正确的范围为空的情况下,它将被定位在 最后,如果first1和first2位于同一位置,则返回的左范围将为空,即ID(first1,first1)。 现在,我们如何使用这个函数来解决您的问题?这对于“停用”范围来说相当容易,但对于“激活”范围来说则有点棘手:
|
|
|
3
1
以下是一个简单的解决方案:
这故意将简单性置于效率之前作为起点,因为它扫描整个向量;另一方面,它是单通道,不进行复制。 |
|
|
4
1
我想我会保持简单:
您会注意到,我假设新范围不能完全包含在旧范围中(例如,旧范围不能从索引4到10,新范围不能从索引5到7)。如果是这种情况,则需要对算法进行一些更改。 |
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |