📄 ipaddresslist.hh
字号:
// -*- c-basic-offset: 4; related-file-name: "../../lib/ipaddresslist.cc" -*-#ifndef CLICK_IPADDRESSLIST_HH#define CLICK_IPADDRESSLIST_HH#include <click/ipaddress.hh>#include <click/vector.hh>CLICK_DECLSclass IPAddressList { public: IPAddressList() : _n(0), _v(0) { } ~IPAddressList() { delete[] _v; } bool empty() const { return _n == 0; } int size() const { return _n; } void push_back(IPAddress); void insert(IPAddress); void assign(int, uint32_t *); bool contains(IPAddress) const; void sort(); bool binsearch_contains(IPAddress) const; private: int _n; uint32_t *_v;};inline voidIPAddressList::assign(int n, uint32_t *v){ delete[] _v; _n = n; _v = v;}inline boolIPAddressList::contains(IPAddress a) const{ for (int i = 0; i < _n; i++) if (_v[i] == a.addr()) return true; return false;}inline boolIPAddressList::binsearch_contains(IPAddress a) const{ int l = 0, r = _n - 1; while (l <= r) { int m = (l + r) / 2; int32_t diff = a.addr() - _v[m]; if (diff == 0) return true; else if (diff < 0) r = m - 1; else l = m + 1; } return false;}CLICK_ENDDECLS#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -