gpt4 book ai didi

c - 使用 Map 函数将键与值映射

转载 作者:行者123 更新时间:2023-11-30 16:27:49 34 4
gpt4 key购买 nike

查看 Map() 和 Reduce() 函数的经典示例,我正在编写一个程序,该程序将 .txt 文件作为输入,然后计算文档中每个单词的频率。我对这两个函数做了很多研究,找到了很多使用 Java 或通用伪代码的示例,但有一部分我无法理解。这就是我现在拥有的:

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

void map(char *name, char *content){
char *str = (char*)malloc((9999)*sizeof(char));
str = content;
char* token;
token = strtok(str, " ,.");

while(token)
{
token = strtok(NULL, " ,.");
}
}

int main(int argc, char *argv[]){
int i =0;
char line[9999]; //= (char*)malloc((argc)*sizeof(char));
FILE *fp = fopen(argv[1], "r");

while (fgets(line, 150, fp) != NULL)
{
map(argv[1], line);
}
fclose(fp);

return 0;
}

map 函数能够逐行标记文档中的每个单词,但我不明白的部分是如何映射值。典型的“emit(token, 1)”如何翻译成 C 语言?

最佳答案

这通常可以通过某种字典来解决(就像可能使用的 java 和伪代码示例一样)。例如,您可以使用二叉搜索树(可能是自平衡红黑树),每个节点保存一个单词和计数。不平衡的 BST 很容易创建,但搜索效率却不那么高。另一种解决方案(更容易实现,但运行速度可能慢得多)是使用一个简单的结构来保存指向字符串和计数的指针,并拥有一个此类结构的数组。无论您是否保持数组排序,这最终都需要大量复制,并且可能需要大量重新分配(因此运行时间很短)。

关于c - 使用 Map 函数将键与值映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52620383/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com