例如,
double myArray[3] = {0.0};
myArray["SSN_1"] = 2.0;
myArray["SSN_2"] = 3.0;
myArray["SSN_3"] = 2.0;
for(... how? ...)
{
... Print ... but, how? ...
}
如果您有任何参考,请链接。
答案 0 :(得分:2)
不在c不可能,只允许整数。
可以使用像
这样的简单结构构建关联容器struct double_map_item {
char *key;
double value;
};
查看bsearch()的手册页示例,了解通过键值查找项目的简单方法。
当然,这是一个非常简单的可能实现,对于更完整和健壮的实现,您应该阅读有关哈希表的内容。
关于this comment,c中字符常量的类型为int
,所以
array['x'] = value;
是有效的,但请注意,这不是很有用,因为
注意:关注your own comment,您可能会看到c ++代码。在c ++中,您可以重载[]
运算符,以便将const char *
作为参数,然后使用哈希表或任何其他方法来查找给定键的匹配元素。
但在c中,这是不可能的。
如果要在c ++中实现这样的容器,下面的示例说明如何继续,请注意这只是为了说明基础概念,您应该使用std::map相反,
#include <iostream>
#include <map>
class Array {
public:
Array();
double operator[](const char *const key);
void insert(const char *const key, double value);
private:
std::map<const char *, double> m_items;
};
Array::Array()
{
}
double
Array::operator[](const char *const key)
{
return m_items[key];
}
void
Array::insert(const char *const key, double value)
{
m_items.insert(std::pair<const char *, double>(key, value));
}
int
main(void)
{
Array items;
items.insert("SSN_1", 2.0);
items.insert("SSN_2", 3.0);
items.insert("SSN_3", 2.0);
std::cout << items["SSN_1"] << std::endl;
return 0;
}