73 lines
1.1 KiB
C++
73 lines
1.1 KiB
C++
/**
|
|
* @file dl_range_any.h
|
|
* @brief 范围操作 任一满足条件
|
|
*
|
|
*
|
|
* @version 1.0
|
|
* @author lveyou
|
|
* @date 23-06-22
|
|
*
|
|
*/
|
|
#pragma once
|
|
|
|
#include "dl_concept.h"
|
|
|
|
//! 对容器任意元素的判断
|
|
namespace dl::Any
|
|
{
|
|
/**
|
|
* @brief 判断容器任意元素等于某值
|
|
* @param[in] container 操作的容器
|
|
* @param[in] v 要比较的值
|
|
*/
|
|
template<typename C, typename V>
|
|
bool Equal(const C& container, const V& v)
|
|
{
|
|
for (auto& iter : container)
|
|
{
|
|
if (iter == v)
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
|
|
template<typename C>
|
|
bool Zero(const C& container)
|
|
{
|
|
return Equal(container, 0);
|
|
}
|
|
|
|
/**
|
|
* @brief 判断容器任意元素满足条件
|
|
* @param[in] container 操作的容器
|
|
* @param[in] func 条件
|
|
*/
|
|
template<typename C, typename F>
|
|
bool Yes(const C& container, F func)
|
|
{
|
|
for (auto& iter : container)
|
|
{
|
|
if (func(iter))
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* @brief 判断容器任意元素小于某值
|
|
* @param[in] container 操作的容器
|
|
* @param[in] v 要比较的值
|
|
*/
|
|
template<typename C, typename V>
|
|
bool Less(const C& container, const V& v)
|
|
{
|
|
for (auto& iter : container)
|
|
{
|
|
if (iter < v)
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
} |