我有这样的代码:
#include <vector>
struct pollfd; // incomplete struct, since i did not included <poll>
struct Status{
// abstract representation of pollfd, epoll_event, kevent
int fd;
int status; // my own status representation
};
class iterator{
public:
hidden_pointer_iterator(const pollfd *pos) : pos(pos){}
bool operator !=(iterator const &other) const{
return ! ( *this == other);
}
bool operator ==(iterator const &other) const;
iterator &operator ++();
Status operator *() const;
private:
const pollfd *pos;
};
class PollSelector{
public:
// ...
iterator begin() const; // pull pointer to fds_.data()
iterator end() const; // pull pointer to fds_.data() + fds_.size()
private:
std::vector<pollfd> fds_;
};
通过在CPP文件中执行所有特定操作,我能够使其运行。
我的问题是-还有更多“标准”方式来执行此迭代器吗?
我的代码可以编译并运行。
我很想知道std中是否有某些东西可以自动完成所有这些工作,而无需进行太多编码。
答案 0 :(得分:0)
IMO,此代码有点脱离主题,将错误的事情抽象出来。
您应该宁愿对解复用器引擎接口进行多种实现,一种使用epoll
,另一种用于kevent
,等等。解复用器引擎接口是允许您为文件描述符注册回调的一种实现。事件,计时器,信号,跨线程等。
在Linux上,除了epoll
之外,几乎没有其他用途。