C ++中的动态结构

时间:2013-09-07 12:21:46

标签: c++ struct

对于C ++中的项目(我对这种语言比较新)我想创建一个存储给定单词和多个类计数的结构。 E.g:

struct Word
{
  string word;

  int usaCount     = 0;
  int canadaCount  = 0;
  int germanyCount = 0;
  int ukCount      = 0;
}

在这个例子中,我使用了4类国家。事实上,有数百个国家级别。

我对此的疑问如下:

  1. 有没有办法动态生成这个国家/地区列表? (例如,有一个国家的文件被阅读,并在此基础上生成这个结构)
  2. 这个结构的拟合应该是一个函数,如果看到类,它会增加计数。还有一种方法可以使这种“动态”,我的意思是我想避免每个类一个函数(例如:incUsa(),incCanada(),incGermany()等。)
  3. 因为我不习惯C ++:这甚至是它的意识形态方法吗?也许有更好的数据结构或另一种(更合适的)方式来解决问题。
  4. 提前致谢。

2 个答案:

答案 0 :(得分:6)

在C ++中classstruct定义是在编译时静态创建的,因此您不能在运行时向struct添加新成员。

对于动态数据结构,您可以使用关联容器,如std::map

std::map<std::string, int> count_map;
count_map["usa"] = 1;
count_map["uk"] = 2;

等...

您可以在count_map

的定义中加入struct Word成员
struct Word
{
  std::string word;
  std::map<std::string, int> count_map;
};

答案 1 :(得分:1)

考虑std :: map。您可以创建一个国家/地区的地图,以计算单词的地图。或者映射到国家地图的字数。您是否使用枚举或字符串作为国家/地区代码取决于您。