std::vector 中查找某个元素是否存在
std::vector
中不存在直接查找某个元素是否存在的方法,一般是通过 <algorithm>
中的 std::find, std::find_if, std::count, std::count_if 等方法的返回值来判断对应元素是否存在。
如当vector中存储的元素为 double 类型时,需要设定其精度,判断代码如下
#include <vector>
#include <algorithm>
double targetVal = 0.01;
vector<double> vec = { 0, 0.005, 0.01, 0.01, 0.015, 0.02, 0.02, 0.025, 0.03, 0.035 };
// 根据默认的精度进行判断
int res2 = std::count(vec.begin(), vec.end(), targetVal);
// 使用Lambda表达式,来根据一定的条件进行判断
int res3 = std::count_if(vec.begin(), vec.end(), [ & ](double val)
{
return fabs(targetVal - val) < 1e-7;
});
// 根据默认精度进行判断
auto it = std::find(vec.begin(), vec.end(), targetVal);
// 使用Lambda表达式,根据是否符合指定条件来进行判断
auto itIf = std::find_if(vec.begin(), vec.end(), [&](double val)
{
return fabs(targetVal - val) < 1e-7;
});
if(it != vec.end()) // 迭代器不等于 vec.end() 时,表示容器中存在该值
{
size_t index = std::distance(vec.begin(), it);
double val = vec[index];
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!