具有用户指定尺寸的数组(或关联数组)

时间:2016-07-14 21:38:27

标签: php c++ arrays data-structures hash

我正在考虑用于存储语法范例的适当数据结构。我想要一个像关联数组,但具有任意数量的维度。在一个简单的例子中,很容易想到数据结构。如果范式的两个维度如下......

性别(男性,女性,中性)

案例(提名,指控,Dative,Genitive)

...那么在C ++中使用哈希映射或在PHP中使用关联数组是有意义的:

$value['Masculine']['Accusative'] = 'foo';
$value['Neuter']['Dative'] = 'foo';

问题是,对于给定的语言,任何数量的“维度”可能都很重要。 (肯定有一个上限,但我不知道提前是什么。)我希望用户指定重要值是什么,并且能够动态地更改它们。

是否有任何类型的数据结构具有这种灵活性,或者我需要创建自己的特殊类或类似的东西?

1 个答案:

答案 0 :(得分:0)

按照lorro的回答并在this question上构建,可以通过创建带有向量或设置为键的数据结构来完成。

这是一种Qt方法;可能它与std工具的工作方式类似。

QHash< QSet<QString> , QString > paradigm;

QSet<QString> descriptor1;
descriptor1 << "Nominative" << "Masculine";
paradigm[descriptor1] = "foo";

QSet<QString> descriptor2;
descriptor2 << "Neuter" << "Dative";
paradigm[descriptor2] = "bar";

QSet<QString> descriptor3;
descriptor3 << "Feminine" << "Genitive";

qDebug() << paradigm.value(descriptor1, "No value")
         << paradigm.value(descriptor2, "No value")
         << paradigm.value(descriptor3, "No value");

输出:

"foo" "bar" "No value"
然而,

PHP数组can only be keyed by strings and integers,因此PHP需要不同的方法。