用数据结构实现一个统计Ip地址在近5s的访问量,并用代码实现
时间: 2024-05-03 12:21:09 浏览: 82
好的,以下是用C++代码实现统计IP地址在近5s内的访问量的示例:
```
#include <iostream>
#include <map>
#include <chrono>
#include <thread>
using namespace std;
int main() {
// 创建map来记录每个IP的访问次数
map<string, int> ip_visit;
while (true) {
// 获取当前时间
auto now = chrono::system_clock::now();
// 遍历map,删除5s之前的记录
for (auto it = ip_visit.begin(); it != ip_visit.end();) {
auto visit_time = chrono::system_clock::from_time_t(it->second);
if (now - visit_time > chrono::seconds(5)) {
it = ip_visit.erase(it);
} else {
++it;
}
}
// 模拟有新的IP访问
string new_ip = "127.0.0.1"; // 假设新IP为127.0.0.1
ip_visit[new_ip] = chrono::system_clock::to_time_t(now);
// 输出当前IP访问量
cout << "Current IP visit count:" << ip_visit.size() << endl;
// 等待1s
this_thread::sleep_for(chrono::seconds(1));
}
return 0;
}
```
该示例中,我们使用了map来记录每个IP的访问次数,并且使用chrono库来获取当前时间和计算时间差。在程序中,我们每隔1s模拟一次IP访问,然后遍历map,删除5s之前的记录,并输出当前IP访问量。
阅读全文