У меня есть набор определяемых пользователем dataType и использую эту переменную набора в структуре. Я хочу сравнить значения set. Как я это сделаю - PullRequest
0 голосов
/ 12 июля 2020
using setIp = set<ipv4address>;

struct Test {

setIp IP1;
setIp IP2;

}

IP1 и IP2 могут иметь более 1 IP-адреса. Я хочу использовать функцию поиска в setIp, и для этого нужен оператор <. Как бы его перегрузить. </p>

1 Ответ

1 голос
/ 12 июля 2020

Вы можете сделать это:

bool operator<(const ipv4address& left, const ipv4address& right) {
    return left.TODO < right.TODO;
}

TODO есть, потому что я не знаю, какие члены вашего ipv4address, но я уверен, что вы можете понять эту часть. Если при сравнении необходимо учитывать несколько членов (например, если вы храните ipv4address как четыре отдельных октета), используйте std :: t ie:

bool operator<(const ipv4address& left, const ipv4address& right) {
    return std::tie(left.o1, left.o2, left.o3, left.o4)
         < std::tie(right.o1, right.o2, right.o3, right.o4);
}

Это означает, что «если left.o1 меньше правого .o1, left is less than right "и т. д.

В любом случае оператор должен быть объявлен до объявления вашего std::set<ipv4address>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...