我想在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 数据结构可能空间不足或速度太慢。