这种字符串如何去重复(数组?)?

C++ 我在一个循环中,会不断收到如下格式字符串,一个序号一个IP对应一个MAC,序号是累加的,不会重复,
如果IP和MAC全部有重复就丢弃,否则重新设置序号,并放入一个容器?结构或数组变量中?
这个怎么写,比较简单?
数据是实时得到的,非固定(当然数量不多,差不多10几组)

序号:1
aaa ="192.168.1.2 " //IP
bbb ="F0-DE-F1-DF-F5-E9" //MAC

序号:2 //需要保留
aaa ="192.168.1.3 " //
bbb ="F0-DE-F1-DF-F5-E9" //

序号:3 //全部与序号1重复,丢弃
aaa ="192.168.1.2 " //
bbb ="F0-DE-F1-DF-F5-E9" //

序号:4//需要保留,重新排号(序号变 3)
aaa ="192.168.1.6 " //
bbb ="F0-DE-F1-DF-F5-E2" //

序号:5 //全部与与序号2重复,丢弃
aaa ="192.168.1.3 " //
bbb ="F0-DE-F1-DF-F5-E9" //

序号:6 //需要重新排号 (序号变 4)
aaa ="192.168.1.2 "
bbb ="F0-DE-F1-DF-F5-E2"

//反正只要IP和MAC有一个不重复的,就保留!
比如以上结果是4组数据:
a[1].序号:1
a[1].ip ="192.168.1.2 " //IP
a[1].mac ="F0-DE-F1-DF-F5-E9" //MAC
a[2].序号:2
a[2].ip ="192.168.1.3 " //IP
a[2].mac ="F0-DE-F1-DF-F5-E9" //MAC
a[3].序号:3
a[3].ip ="192.168.1.6 " //IP
a[3].mac ="F0-DE-F1-DF-F5-E2" //MAC
a[4].序号:4
a[4].ip ="192.168.1.2 " //IP
a[4].mac ="F0-DE-F1-DF-F5-E2" //MAC

该回答引用GPTᴼᴾᴱᴺᴬᴵ
可以使用一个数组来存储收到的数据,并在接收新数据时,判断其IP和MAC是否与之前的数据重复。如果不重复,就将其存储到数组中。如果重复,则丢弃该数据。

以下是一个示例代码,可以根据需要进行修改和调整:

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>

struct Data
{
    int seq;    // 序号
    std::string ip; // IP地址
    std::string mac;    // MAC地址
};

int main()
{
    std::vector<Data> data_list;    // 存储数据的数组
    int seq = 0;    // 序号

    // 循环接收数据
    while (true)
    {
        std::string ip, mac;
        std::cin >> ip >> mac;

        // 判断是否重复
        bool is_duplicate = false;
        for (const auto& data : data_list)
        {
            if (data.ip == ip && data.mac == mac)
            {
                is_duplicate = true;
                break;
            }
        }

        // 如果不重复,则存储数据
        if (!is_duplicate)
        {
            ++seq;
            data_list.push_back({seq, ip, mac});
        }
    }

    return 0;
}

当收到新的数据时,会遍历数组中的所有数据,并逐一比较IP和MAC是否与新数据重复。如果有任何一个数据与新数据重复,则说明该数据已经存在,不需要重复存储。如果遍历完整个数组都没有找到重复的数据,则说明新数据不重复,可以将其存储到数组中。

std::unordered_map<std::string, std::int> umap