c++两个时间段取交集
时间: 2023-07-05 09:30:58 浏览: 58
假设你有两个时间段,分别为 [start1, end1] 和 [start2, end2],可以使用 max() 函数和 min() 函数来计算它们的交集。
以下是示例代码:
```cpp
#include <iostream>
#include <algorithm>
int main() {
int start1 = 10, end1 = 20;
int start2 = 15, end2 = 25;
int start = std::max(start1, start2);
int end = std::min(end1, end2);
if (start < end) {
std::cout << "The intersection is [" << start << ", " << end << "]" << std::endl;
} else {
std::cout << "There is no intersection." << std::endl;
}
return 0;
}
```
输出结果为:
```
The intersection is [15, 20]
```
可以看到,输出结果为两个时间段的交集。如果它们没有交集,则输出提示信息。
相关问题
ue4 两个TArray如何取交集
你可以使用`TArray::FilterByPredicate`函数和Lambda表达式来实现两个TArray的交集。假设你有两个TArray,分别为`TArray<A>` ArrayA 和 `TArray<A>` ArrayB,那么可以按照以下步骤来取交集:
1. 定义一个Lambda表达式,该表达式将用于过滤ArrayA中的元素。在Lambda表达式中,使用`TArray::Contains`函数检查元素是否同时存在于ArrayB中。
```C++
auto FilterPredicate = [&ArrayB](const A& Element) -> bool
{
return ArrayB.Contains(Element);
};
```
2. 使用`TArray::FilterByPredicate`函数过滤ArrayA中的元素,并将结果存储在一个新的TArray中。
```C++
TArray<A> Intersection;
ArrayA.FilterByPredicate(FilterPredicate, Intersection);
```
3. 现在,Intersection中将只包含同时存在于ArrayA和ArrayB中的元素,这就是两个TArray的交集。
完整的代码如下:
```C++
auto FilterPredicate = [&ArrayB](const A& Element) -> bool
{
return ArrayB.Contains(Element);
};
TArray<A> Intersection;
ArrayA.FilterByPredicate(FilterPredicate, Intersection);
```
希望这可以帮助到你。
求两个数组的交集c++
假设有两个数组a和b,可以用以下方法求它们的交集c:
1.先将两个数组排序,可以使用排序算法如快速排序、归并排序等;
2.设置两个指针i和j,分别指向数组a和数组b的开头;
3.将i和j所指向的元素进行比较,如果相等,则将该元素加入到交集c中,并将两个指针都向后移动一位;如果不相等,则将指向较小元素的指针向后移动一位;
4.重复步骤3,直到i或j到达数组的尾部。
下面是一个示例代码:
```python
def intersection(a, b):
a.sort()
b.sort()
i, j = 0, 0
c = []
while i < len(a) and j < len(b):
if a[i] == b[j]:
c.append(a[i])
i += 1
j += 1
elif a[i] < b[j]:
i += 1
else:
j += 1
return c
```
该函数接受两个参数a和b,返回它们的交集c。该函数的时间复杂度为O(nlogn),其中n为两个数组的总长度。