我需要的是类似于数组但是对于随机数而不是(0,1,2,3 .....)。 我需要保持一个数字作为索引/键并为其分配一个字符串。
例如学号,然后有名字
所以我可以访问students[number]
并检索他们的名字。
类似于下面的代码,但它在C ++中使用ANSI C
std::map <string, char> grade_list;
grade_list["John"] = 'B'
在此处找到:http://www.cprogramming.com/tutorial/stl/stlmap.html
我似乎无法找到解决ANSI C中的这个问题。
任何人都可以推荐任何方式来制作这个吗?
编辑:另一点是表的值将被硬编码,不需要更改,所以它只是一个方法,提供类似于...的访问权。
name[accesskey]
将返回字符串/数据
GLIBS无法正常工作,因为我正在使用编译器MINGW32并且使用它时出现问题。
答案 0 :(得分:2)
您可以使用GLib 哈希表数据结构。
答案 1 :(得分:0)
使用struct
:
typedef struct {
int valid;
char name[32];
} Student;
Student students[100];
/* Initialize an element in the array. */
students[0].valid = 1;
strcpy(students[0].name, "Joe Blow");
然后编写函数来查找第一个未使用的元素,在找到它之后初始化一个元素,依此类推。
如果你想让它更具动感,你可以改为使用动态数组,这样的话可能是:
typedef struct {
size_t allocated;
Student *data;
} StudentRegistry;
然后使用realloc()
使根据data
生成的数组在需要时增长。
这一切都假设学生通过他们的索引识别出数组,这似乎与你问题的第一部分(“学号”)相符。这意味着,如果例如,学生ID被“重新循环”。学生被删除。
UPDATE :如果你想选择自己的ID:s,而不是通过索引隐式使用“创建”的那些,那么这种方法并不好。然后我会推荐一个哈希表。我喜欢滑稽的。