【发布时间】:2011-09-06 22:21:55
【问题描述】:
如何在 C++ 中使用带有地图的 2D 字符数组。我想这样做:
map<char[50][50],int>M;
char brr[50][50];
//some operation here on the array
int aa=1;
if(M.find(brr)==M.end())
{
M[brr]=aa;
aa+=1;
}
我做错了什么?
编辑:
我刚刚找到了另一种方法。这样我就可以实现我在问题中所说的。我不使用二维数组,而是将其转换为字符串并使用它。它仍然会产生相同的结果:
map<string,int>M;
char brr[50][50];
//some operation here on the array
int aa=1,i,j;
string ss="";
for(i=0;i<50;i++)
{
for(j=0;j<50;j++)
{
ss+=brr[i][j];
}
}
if(M.find(ss)==M.end())
{
M[ss]=aa;
aa+=1;
}
【问题讨论】:
-
进一步阅读 Oli 的回答;他所说的大部分内容与 STL 在
map(en.wikipedia.org/wiki/Map_(C%2B%2B)) 中使用的底层容器有关。它通常是一棵红黑树。 -
请不要将答案写成问题。