我正在考虑用于存储语法范例的适当数据结构。我想要一个像关联数组,但具有任意数量的维度。在一个简单的例子中,很容易想到数据结构。如果范式的两个维度如下......
性别(男性,女性,中性)
案例(提名,指控,Dative,Genitive)
...那么在C ++中使用哈希映射或在PHP中使用关联数组是有意义的:
$value['Masculine']['Accusative'] = 'foo';
$value['Neuter']['Dative'] = 'foo';
问题是,对于给定的语言,任何数量的“维度”可能都很重要。 (肯定有一个上限,但我不知道提前是什么。)我希望用户指定重要值是什么,并且能够动态地更改它们。
是否有任何类型的数据结构具有这种灵活性,或者我需要创建自己的特殊类或类似的东西?
答案 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需要不同的方法。