#include "IPList.h" #include bool IPList::CheckIPv4(std::string ip) { std::regex v4("^(((\\d{1,2})|(1\\d{2})|(2[0-4]\\d)|(25[0-5]))\\.){3}((\\d{1,2})|(1\\d{2})|(2[0-4]\\d)|(25[0-5]))$"); return std::regex_match(ip, v4); } IPList::IPList() { list.clear(); } IPList::IPList(std::initializer_list list) { for (const auto& ele : list) this->list.insert(ele); } IPList::IPList(const IPList& obj) { for (const auto& ele : obj.list) list.insert(ele); } bool IPList::Push(std::string ip) { if (!CheckIPv4(ip)) return false; list.insert(ip); return true; } bool IPList::Pop(std::string ip) { if (!Exist(ip)) return false; list.erase(ip); return false; } bool IPList::Exist(std::string ip) { return (list.find(ip) != list.end()); } bool IPList::Exist(std::string ip) const { return (list.find(ip) != list.end()); } bool IPList::Empty() { return list.empty(); } size_t IPList::Size() { return list.size(); } auto IPList::begin() { return list.begin(); } auto IPList::end() { return list.end(); } auto IPList::rbegin() { return list.rbegin(); } auto IPList::rend() { return list.rend(); } auto IPList::begin() const { return list.begin(); } auto IPList::end() const { return list.end(); } auto IPList::rbegin() const { return list.rbegin(); } auto IPList::rend() const { return list.rend(); } bool IPList::operator<(const IPList& obj) const { return list < obj.list; }