按string输入一组点分十进制的IP地址,按照IP地址大小进行升序排列。IP地址范围为0.0.0.0 -255.255.255.255,用C++实现
时间: 2024-12-22 12:29:28 浏览: 22
为了实现这个功能,你可以使用C++标准库中的`std::sort`函数,结合自定义的比较函数来处理字符串形式的IP地址并按字节进行排序。这里是一个简单的示例:
```cpp
#include <iostream>
#include <vector>
#include <algorithm> // 包含sort函数
#include <sstream> // 使用istringstream解析字符串
// 自定义IP地址比较函数
bool compareIPs(const std::string& a, const std::string& b) {
std::istringstream iss_a(a);
std::istringstream iss_b(b);
int octet1_a, octet2_a, octet3_a, octet4_a;
iss_a >> octet1_a >> octet2_a >> octet3_a >> octet4_a;
int octet1_b, octet2_b, octet3_b, octet4_b;
iss_b >> octet1_b >> octet2_b >> octet3_b >> octet4_b;
return (octet1_a <= octet1_b && octet2_a <= octet2_b && octet3_a <= octet3_b && octet4_a <= octet4_b);
}
int main() {
std::vector<std::string> ip_addresses = {"192.168.0.1", "10.0.0.2", "172.16.31.10", "0.0.0.0", "255.255.255.255"};
// 对ip_addresses进行排序
std::sort(ip_addresses.begin(), ip_addresses.end(), compareIPs);
for (const auto& addr : ip_addresses) {
std::cout << addr << " ";
}
// 输出结果,例如:0.0.0.0 10.0.0.2 192.168.0.1 172.16.31.10 255.255.255.255
return 0;
}
```
在这个例子中,`compareIPs`函数将两个IP地址分割成四个整数部分,并逐部分进行比较。如果第一个、第二个、第三个或第四个八位组都满足小于或等于的关系,则整个IP地址被认为是有序的。
阅读全文