类是保存此数据C ++的最佳方法吗?

时间:2011-10-27 06:05:22

标签: c++ python types

我有美国各州的列表以及各种属性,并且在具有各种属性的城市中,这些都需要在启动时动态创建,目前来自文本文件。

在python中,为了便于阅读,我会使用一个dict矩阵(听起来很糟糕),可以用这样的方式表示:

locations = {
    "Alabama": {
        "url" : "www.domain.com/page.php",
        "users": 8
        "cities" : {
            "city1": {
                "url" : "www.domain.com/page.php",
                "users": 2
            }
            "city2": {
                "url" : "www.domain.com/page.php",
                "users": 1
             }
        }
    }
}

我当然可以使用一类课程,但实际上没有必要只代表它;在python中对于如此小的列表,dict会更有用,我目前没有计划需要类或数据库的额外功能。会有更多细节,当然还有所有州,可能每个州有0-10个城市/地区,但总的来说相对较小。

在C ++中,我可以用嵌套的unordered_map来实现类似的东西,但是有一件事我不能将数据类型与无序映射混合,所以“用户”必须是一个字符串而不是一个int(而且我'我不知道一个更合适的内置类型),但是我可以轻松地通过使用字符串来做大多数事情,但是是什么让我来问这个问题是在创建标题声明时我很快意识到它看起来很丑陋且几乎无法读取。当它被创建时,它将成为一个const,或者我只是像在python中一样创建它。虽然我并不总是遵循它们,但我主要是在这里寻找最佳实践建议,应该如何我代表这些数据,如果我在其上获得评分或以其他方式发布它?

3 个答案:

答案 0 :(得分:4)

假设State始终具有相同的字段(urluserscities),最好为其创建一个类。与City同样如此。然后你会得到:

  • map<string, State>代表您的位置,map<string, City>代表各州的城市,或者......
  • set<State>代表您的位置(其中State有一个name字段用于索引)和set<City>代表每个州的城市(同样,每个州都有一个name字段)。

你想养成尽可能让类型系统为你工作的习惯。

答案 1 :(得分:0)

为什么不将它存储在JSON或XML中并获取JSON或XML阅读器库?

答案 2 :(得分:0)

简而言之:是的。你想要一个适合你的城市和州的课程。

您可能想要为每个州和城市分配一个唯一ID。 该id可以是用于快速查找的数组的索引。

然后,您可以轻松地让每个城市通过ID跟踪其所属的州。

这应该是如何组织它的一个很好的起点,因为你真的只是问了一个是/否的问题 其余部分留给读者练习。 (在答案中合理地说出来的确非常罕见)