我想实现一个结构,几乎像布尔表,在我的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
。它可能更快,但语法略有不同。
根据您的需求,映射/嵌套映射数据结构可能空间效率低下或太慢。