如何找到一个重复的数组?(c++)

How to find a duplicate in an array? (C++)

本文关键字:数组 c++ 一个 何找      更新时间:2023-10-16

如何在数组中找到重复项?最大值是3 Clients。当我有2个Client时,它用传入的Client s更新现有的Client s,但是当我有3个Client时,它停止用传入的Client s更新现有的Client s。服务器仍然接收数据,Client仍然发送数据,但它不更新数据。

我在这里看过一些关于数组中重复的帖子,但我无法理解它们。

我认为这与j < 3i < 3有关,但我不太确定。如何正确地检测和删除重复项?

  //Initialize Client
  Client clients[3]; //Max of 3 clients
  initClient(clients);

  while (1){
    for(int i = 0; i < 3; i++) {//Existing Client
        for(int j = i; j < 3; j++) {//Incoming Client
            if(j != i) {
                if (clients[i].port == clients[j].port){ //If incoming port has the same port as existing, then update 
                    clients[i].x = clients[j].x;
                    clients[i].y = clients[j].y;
                    clients[i].channel = clients[j].channel;
                    clients[i].data = clients[j].data;
                    clients[i].len = clients[j].len;
                    clients[i].maxlen = clients[j].maxlen;
                    clients[i].status = clients[j].status;
                    clients[i].host = clients[j].host;
                    clients[i].port = clients[j].port;
                    clients[i].address = clients[j].address;
                    clients[i].present = clients[j].present;
                    //Remove the incoming client
                    clients[j].present = false;
                    clients[j].alive = false;
                    objectCount2--;
                }
            }
        }
    }
   }

除了忘记检查元素是否已被删除之外,您几乎做得很好。

for( uint idx = 0; idx < clients.size() - 1; ++idx)
{
    for( uint jdx = 1 + idx; jdx < clients.size(); ++jdx )
    {
        if( clients[idx].not_removed() 
         && clients[jdx].not_removed() 
         && clients[idx].match( jdx ) )
        {
            clients[idx].assign( jdx );
            clients[jdx].remove();
        }
    }
}

类似于冒泡排序。