#include "../include/map.h" #include typedef struct { int id; char name[100]; float salary; } Employee; int main() { // 初始化哈希表 struct hashmap myMap; map_init(&myMap); // 创建并初始化一些 Employee 结构体 Employee *alice = malloc(sizeof(Employee)); alice->id = 1; strcpy(alice->name, "Alice"); alice->salary = 50000.0; Employee *bob = malloc(sizeof(Employee)); bob->id = 2; strcpy(bob->name, "Bob"); bob->salary = 52000.0; // 将 Employee 结构体存入哈希表 char *key1 = "employee1"; map_set(&myMap, key1, strlen(key1), alice, sizeof(Employee*), false); char *key2 = "employee2"; map_set(&myMap, key2, strlen(key2), bob, sizeof(Employee*), true); // 尝试从哈希表中检索 Employee uint32_t ret_value_len; Employee *retrieved_employee = (Employee *)map_get(&myMap, key1, strlen(key1), &ret_value_len); if (retrieved_employee) { printf("Retrieved Employee: %s, ID: %d, Salary: %.2f\n", retrieved_employee->name, retrieved_employee->id, retrieved_employee->salary); } else { printf("Employee not found.\n"); } alice->id = 12; char *key = "employee1"; strcat(alice->name, key); retrieved_employee = (Employee *)map_get(&myMap, key1, strlen(key1), &ret_value_len); if (retrieved_employee) { printf("Retrieved Employee: %s, ID: %d, Salary: %.2f\n", retrieved_employee->name, retrieved_employee->id, retrieved_employee->salary); } else { printf("Employee not found.\n"); } uint64_t value1 = 20, value2 = 30; char *key3 = "test1"; char *key4 = "test2"; map_set(&myMap, key3, strlen(key3), &value1, sizeof(uint64_t), true); uint32_t *value = (uint32_t *)map_get(&myMap, key3, strlen(key3), &ret_value_len); if (value) printf("Retrieved value: %d\n", *value); else printf("Value not found.\n"); value1 ++; value = (uint32_t *)map_get(&myMap, key3, strlen(key3), &ret_value_len); if (value) printf("Retrieved value: %d\n", *value); else printf("Value not found.\n"); map_upsert(&myMap, key3, strlen(key3), &value1, sizeof(uint64_t)); value = (uint32_t *)map_get(&myMap, key3, strlen(key3), &ret_value_len); if (value) printf("Retrieved value: %d\n", *value); else printf("Value not found.\n"); free(alice); free(bob); return 0; }