69 lines
1.6 KiB
C
69 lines
1.6 KiB
C
|
|
//
|
||
|
|
// Created by matrixai on 4/2/24.
|
||
|
|
//
|
||
|
|
|
||
|
|
#ifndef TRAIN_RFID_LINUX_UTILS_H
|
||
|
|
#define TRAIN_RFID_LINUX_UTILS_H
|
||
|
|
|
||
|
|
#include <mutex>
|
||
|
|
#include <sstream>
|
||
|
|
#include <fstream>
|
||
|
|
#include <dirent.h>
|
||
|
|
#include <string>
|
||
|
|
#include <vector>
|
||
|
|
#include <algorithm>
|
||
|
|
#include <set>
|
||
|
|
#include <map>
|
||
|
|
#include <memory>
|
||
|
|
#include <cstring>
|
||
|
|
|
||
|
|
namespace ai_matrix
|
||
|
|
{
|
||
|
|
class Utils final
|
||
|
|
{
|
||
|
|
public:
|
||
|
|
static Utils *getins();
|
||
|
|
|
||
|
|
//计算均值
|
||
|
|
float getMean(const std::vector<float> &data);
|
||
|
|
//计算最大值
|
||
|
|
float getMax(const std::vector<float> &data);
|
||
|
|
//计算最小值
|
||
|
|
float getMin(const std::vector<float> &data);
|
||
|
|
//计算中位数
|
||
|
|
float getMedian(const std::vector<float> &data);
|
||
|
|
|
||
|
|
bool contains_vec(const std::vector<std::string> &vec, std::string x);
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
private:
|
||
|
|
Utils() = default;
|
||
|
|
Utils(const Utils &) = delete;
|
||
|
|
Utils(Utils &&) = delete;
|
||
|
|
Utils &operator=(const Utils &) = delete;
|
||
|
|
Utils &operator=(Utils &&) = delete;
|
||
|
|
~Utils() = default;
|
||
|
|
|
||
|
|
//定义一个嵌套类,负责释放内存,操作系统自动完成,不用担心内存泄露
|
||
|
|
class GarbageCollector
|
||
|
|
{
|
||
|
|
public:
|
||
|
|
~GarbageCollector()
|
||
|
|
{
|
||
|
|
if (Utils::ins)
|
||
|
|
{
|
||
|
|
delete Utils::ins;
|
||
|
|
Utils::ins = nullptr;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
};
|
||
|
|
|
||
|
|
static GarbageCollector gc;
|
||
|
|
static Utils *ins;
|
||
|
|
static std::mutex mx; //锁,保证线程安全
|
||
|
|
};
|
||
|
|
}
|
||
|
|
|
||
|
|
#endif //TRAIN_RFID_LINUX_UTILS_H
|