wlsk888 2023-02-24 18:22 采纳率: 90.9%
浏览 25
已结题

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

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

  • 写回答

2条回答 默认 最新

  • MarkHan_ 2023-02-24 19:08
    关注

    该回答引用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是否与新数据重复。如果有任何一个数据与新数据重复,则说明该数据已经存在,不需要重复存储。如果遍历完整个数组都没有找到重复的数据,则说明新数据不重复,可以将其存储到数组中。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月4日
  • 已采纳回答 2月24日
  • 创建了问题 2月24日

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么