|
|
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)。如果是这种情况,则需要对算法进行一些更改。 |
|
|
Julia · 矢量中相加为总和S的值的数量 3 年前 |
|
|
C_Rod · 在模板方法中确定STL容器中项目的数据类型 4 年前 |
|
|
quantumwell · 将空向量放入std::map() 8 年前 |
|
|
OutOfBound · 对未初始化内存使用算法的优点 8 年前 |
|
|
DarthRubik · 在使用列表删除之后,迭代器如何不无效 8 年前 |