C++ 重载sockaddr_in的<
时间: 2024-05-15 20:14:18 浏览: 126
C++的函数重载
5星 · 资源好评率100%
在C++中,可以通过定义一个自定义的比较函数或者重载运算符`<`来比较两个`sockaddr_in`类型的对象。
以下是一个比较函数的示例:
```c++
bool cmp_sockaddr_in(const sockaddr_in& addr1, const sockaddr_in& addr2) {
// 按照IP地址从小到大排序
if (addr1.sin_addr.s_addr < addr2.sin_addr.s_addr) {
return true;
}
// 如果IP地址相同,则按照端口号从小到大排序
else if (addr1.sin_addr.s_addr == addr2.sin_addr.s_addr
&& addr1.sin_port < addr2.sin_port) {
return true;
}
else {
return false;
}
}
```
重载运算符`<`的示例:
```c++
bool operator<(const sockaddr_in& addr1, const sockaddr_in& addr2) {
// 按照IP地址从小到大排序
if (addr1.sin_addr.s_addr < addr2.sin_addr.s_addr) {
return true;
}
// 如果IP地址相同,则按照端口号从小到大排序
else if (addr1.sin_addr.s_addr == addr2.sin_addr.s_addr
&& addr1.sin_port < addr2.sin_port) {
return true;
}
else {
return false;
}
}
```
这样定义后,就可以像比较其他基本类型的对象一样使用`<`运算符来比较两个`sockaddr_in`类型的对象了。例如:
```c++
sockaddr_in addr1, addr2;
// 初始化 addr1 和 addr2
if (addr1 < addr2) {
// addr1 在 addr2 前面
}
else {
// addr2 在 addr1 前面或者相等
}
```
阅读全文