C 中 2 种数据类型 /MAP 的数组
我需要的是类似于数组,但对于随机数而不是(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]
的访问的方法将返回一个字符串/data
GLIBS 无法工作,因为我使用的是编译器 MINGW32 并且使用它时出现问题。
What I require is similar to array but for random numbers rather than (0,1,2,3.....).
I need to hold a number as the index/key and assign it a string.
For example student number, and then there name
So I could access students[number]
and retrieve their name.
Similar to this code below but its in C++ and im using ANSI C
std::map <string, char> grade_list;
grade_list["John"] = 'B'
which was found here: http://www.cprogramming.com/tutorial/stl/stlmap.html
I just cant seem to find away to solve this problem in ANSI C.
Can any one reccommend any way to produce this?
EDIT: Another point is the values of the table will be hard coded and do not required to be change so it's just a method with provides access to similar to...
name[accesskey]
would return a string/data
GLIBS wont work because I'm using the compiler MINGW32 and there's problems using it.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用 GLib 哈希表数据结构。
http://developer.gnome.org/glib/2.30/glib-Hash -Tables.html
You can use GLib Hash table data structure.
http://developer.gnome.org/glib/2.30/glib-Hash-Tables.html
使用
struct
数组:然后编写函数来查找第一个未使用的元素,找到后初始化一个元素,依此类推。
如果您想让它更加动态,您可以使用动态数组,可能是这样的:
然后使用
realloc()
使数组以data
为根> 在需要时成长。这一切都假设学生是通过数组中的索引来识别的,这似乎与问题的第一部分(“学生编号”)相匹配。这意味着如果学生被删除,学生 ID 将被“重新循环”。
更新:如果您想选择自己的 ID,而不是使用通过索引隐式“创建”的 ID,那么这种方法并不好。然后我会推荐一个哈希表。我喜欢油嘴滑舌的。
Use an array of
struct
:Then write functions to find the first unused element, initializing one after finding it, and so on.
If you want to make it a bit more dynamic, you can instead use a dynamic array, something like this maybe:
and then use
realloc()
to make the array rooted atdata
grow when needed.This all assumes that students are identified by their indices into the arrays, which seems to match the first part of your question ("student number"). This means student ID:s are "re-cycled" if e.g. a student is deleted.
UPDATE: If you want to choose your own ID:s, rather than use the ones "created" implicitly by indexing, then this approach is no good. I would then recommend a hash table. I like glib's.