色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

c json 去重復數據

錢艷冰2年前8瀏覽0評論

C JSON 是一個輕量級的數據交換格式,它被廣泛應用于互聯網中的數據交換和存儲。在使用 C JSON 處理大量數據的時候,可能會遇到一些重復數據的問題。如何去重數據是一個非常重要的問題。下面我們來了解下在 C JSON 中如何去重數據。

下面的代碼演示了如何使用 C JSON 去重一個數組:

#include#include#include#define NODES_MAX 1000
cJSON* unique(cJSON* src)
{
cJSON* root = cJSON_CreateArray();
int nodes[NODES_MAX] = {0};
int cur = 0;
for (int i = 0; i< cJSON_GetArraySize(src); i++)
{
cJSON* val = cJSON_GetArrayItem(src, i);
int hash = cJSON_Hash(val, 0);
if (!nodes[hash % NODES_MAX])
{
nodes[hash % NODES_MAX] = 1;
cJSON_AddItemToArray(root, val);
cur++;
}
}
return root;
}
int main(void)
{
char* json_str = "[1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 9, 10]";
cJSON* json = cJSON_Parse(json_str);
cJSON* unique_json = unique(json);
char* unique_json_str = cJSON_Print(unique_json);
printf("%s\n", unique_json_str);
cJSON_Delete(json);
cJSON_Delete(unique_json);
return 0;
}

在上面的代碼中,我們使用了一個 nodes 數組,它的下標是 cJSON_Hash 計算出來的哈希值。當節點第一次出現時,它的哈希值所對應的 nodes 數組元素設為 1,同時將節點添加到結果數組中。只有當哈希值所對應的 nodes 數組元素為 0 時表明節點還沒有添加過,才進行添加。

使用 C JSON 去重數據非常方便,只需要按照上面的方式來實現即可。