在MFC中实现一个布尔表结构

Implementing a boolean table like structure in MFC

本文关键字:一个 布尔表 结构 MFC 实现      更新时间:2023-10-16

我想实现一个结构,几乎像布尔表,在我的MFC应用程序。行索引和列索引将是字符串列表,并且在两个轴上是相同的。而且我一开始也不知道尺寸。例子:

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中实现这种结构的最佳方法是什么?2 d向量?如果是,那又是怎样的呢?

最省力:

#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。它可能更快,但语法略有不同。

根据您的需求,映射/嵌套映射数据结构可能空间效率低下或太慢。