我想在MFC应用程序中实现几乎类似于 bool(boolean) 表的结构。行索引和列索引将是一个字符串列表,并且在两个轴上都相同。另外我最初也不知道大小。例:

Table[string1][string1]=0
Table[string1][string2]=0
Table[string1][string3]=1
Table[string1][string4]=1
Table[string2][string1]=1
Table[string2][string2]=0
Table[string2][string3]=0
Table[string2][string4]=1

等等...

在MFC中实现这种结构的最佳方法是什么? 2D vector ?如果是这样,那又如何?

最佳答案

最少的努力:

#include <map>
#include <iostream>

typedef std::map<std::string, std::map<std::string, bool>> relation;

int main()
{
  relation r;
  r["string1"]["string1"] = false;
  r["string1"]["string2"] = true;

  std::cout << r["string1"]["string1"] << " "
            << r["string1"]["string2"] << " "
            << r["string1"]["string3"] << std::endl;

  return 0;
}

请考虑未初始化的几个字符串的默认值是false(例如r["string1"]["string3"] == false)。

类似的想法是使用普通的线性映射,其中键是字符串的std::pair。它可能更快,但语法略有不同。

根据您的要求, map /嵌套 map 数据结构可能空间不足或速度太慢。

08-26 20:15
查看更多