如何找到一个重复的数组?(c++)
How to find a duplicate in an array? (C++)
如何在数组中找到重复项?最大值是3 Clients
。当我有2个Client
时,它用传入的Client
s更新现有的Client
s,但是当我有3个Client
时,它停止用传入的Client
s更新现有的Client
s。服务器仍然接收数据,Client
仍然发送数据,但它不更新数据。
我在这里看过一些关于数组中重复的帖子,但我无法理解它们。
我认为这与j < 3
或i < 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();
}
}
}
类似于冒泡排序。
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组的地址分配给变量并删除
- 从C++本机插件更新Vector3数组
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 数组索引的值没有增加
- 将对象数组的引用传递给函数
- 为char数组调整zlib-zpipe
- 2D数组来自文本输入,中间有空格
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- 使用strcpy将char数组的元素复制到另一个数组
- 使用指针从C++中的数组中获取最大值
- C++使用整数的压缩数组初始化对象
- 告诉一个 const char 数组,除了编译时 C 样式的字符串外,它不以 '