具有用户指定维度的数组(或关联数组)

Array (or associative array) with user-specified dimensions

本文关键字:数组 关联 用户      更新时间:2023-10-16

我正在尝试考虑用于存储语法范式的适当数据结构。我想要类似关联数组的东西,但具有任意数量的维度。在简单的情况下,很容易想到数据结构。如果范式的两个维度如下...

性别(男性、女性、中性)

格(主格、宾格、格格、属格)

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

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

问题在于,对于给定的语言,任何数量的"维度"都可能很重要。(肯定有上限,但事先不知道那是什么。我希望用户指定重要值是什么,并且能够动态更改它们。

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

按照 lorro 的回答并在这个问题上,可以通过创建一个以向量或设置为键的 has 数据结构来完成。

这是一个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 数组只能由字符串和整数键控,因此 PHP 需要不同的方法。