🍿*★,°*:.☆( ̄▽ ̄)/$:*.°★* 🍿 💥💥💥欢迎来到🤞汤姆🤞的csdn博文💥💥💥 💟💟喜欢的朋友可以关注一下,下次更新不迷路💟💟 😆😆😆私聊获取个人订阅号哦,欢迎订阅共同学习😆😆😆 💖💖💖💖可以加入大家庭群聊,一起学习天天有福利💖💖💖💖
🍬话不多说上代码
/// <summary>
/// 两个vector求交集
/// </summary>
/// <returns></returns>
public:
template<typename T>
static auto
VectorIntersection(const std::vector<T> &firstVector, const std::vector<T> &secondVector) -> std::vector<T> {
std::vector<T> IntersectResult;
IntersectResult.resize(min(firstVector.size(), secondVector.size()));
typename std::vector<T>::iterator end = std::set_intersection(firstVector.begin(), firstVector.end(),
secondVector.begin(), secondVector.end(),
IntersectResult.begin());
IntersectResult.erase(end, IntersectResult.end());
return IntersectResult;
}
/// <summary>
/// 两个vector求并集
/// </summary>
/// <returns></returns>
public:
template<typename T>
static auto
VectorUnion(const std::vector<T> &firstVector, const std::vector<T> &secondVector) -> std::vector<T> {
std::vector<T> UnionResult{};
UnionResult.resize(firstVector.size() + secondVector.size());
typename std::vector<T>::iterator end = std::set_union(firstVector.begin(), firstVector.end(),
secondVector.begin(), secondVector.end(),
UnionResult.begin());
UnionResult.erase(end, UnionResult.end());
return UnionResult;
}
/// <summary>
/// 两个vector求差集
/// </summary>
/// <returns></returns>
public:
template<typename T>
static auto
VectorDifference(const std::vector<T> &firstVector, const std::vector<T> &secondVector) -> std::vector<T> {
std::vector<T> DifferenceResult{};
DifferenceResult.resize(firstVector.size());
typename std::vector<T>::iterator end = std::set_difference(firstVector.begin(), firstVector.end(),
secondVector.begin(), secondVector.end(),
DifferenceResult.begin());
DifferenceResult.erase(end, DifferenceResult.end());
return DifferenceResult;
}
🤨测试
[[noreturn]]
int main(int argc, char **argv) {
std::vector<int> v1 = {1, 2, 3, 4};
std::vector<int> v2 = {2, 3, 4, 5};
auto v3 = BasicMath::VectorIntersection(v1, v2);
std::cout << "求交集结果:";
std::for_each(v3.begin(), v3.end(), [](const int &item) {
std::cout << item << " ";
});
std::cout << std::endl;
v3 = BasicMath::VectorUnion(v1, v2);
std::cout << "求并集结果:";
std::for_each(v3.begin(), v3.end(), [](const int &item) {
std::cout << item << " ";
});
std::cout << std::endl;
v3 = BasicMath::VectorDifference(v1, v2);
std::cout << "求差集结果v1-v2:";
std::for_each(v3.begin(), v3.end(), [](const int &item) {
std::cout << item << " ";
});
std::cout << std::endl;
v3 = BasicMath::VectorDifference(v2, v1);
std::cout << "求差集结果v2-v1:";
std::for_each(v3.begin(), v3.end(), [](const int &item) {
std::cout << item << " ";
});
std::cout << std::endl;
}
😋结果
求交集结果:2 3 4
求并集结果:1 2 3 4 5
求差集结果v1-v2:1
求差集结果v2-v1:5
更多好文推荐
🍸2021-4月Python 机器学习——中文新闻文本标题分类
🍹2021年4月-(计算机网络)小型校园网络模拟搭建,最全最准确版
🍺2022-10-31-基于用户的协同过滤推荐算法实现+MAE+RMSE
🍻2022-11-28-大数据可视化,特征维度大于50
🥂2023-3-9-一篇简短的文章把C++左右值关系讲的透透彻彻
上一篇 |
End
| 下一篇 |