我想在我的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中实现这种结构的最佳方法是什么? 2D矢量?如果是,那怎么样?
答案 0 :(得分:3)
努力:
#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
个字符串。它可能更快,但语法略有不同。
根据您的要求,地图/嵌套地图数据结构可能空间效率低或速度太慢。