[英]Char 2D array in map in C++
如何在C ++中將2D char數組與地圖一起使用。 我想做這個:
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;
}
我究竟做錯了什么?
編輯:
我剛剛找到了另一種方法。 這樣我就可以實現我在問題中所說的。 與其使用2d數組,不如將其轉換為字符串並使用它。 仍然會產生相同的結果:
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;
}
你不能 無法將數組分配給您(例如,您不能在示例中使用brr = XXX;
),這是std::map
的鍵類型的要求。 同樣,密鑰需要在其上定義嚴格的弱排序 (即,它需要operator<
或比較器功能)。
您可以考慮將數組包裝在一個類中,定義一個適當的operator <
,然后將其用作鍵類型。
您必須使用包裝器類,並且它需要支持operator<
。 如果按字母順序排序很好,則可以執行以下操作:
#include <boost/array.hpp>
#include <map>
int main()
{
typedef boost::array<boost::array<char, 50>, 50> Array;
std::map<Array, int> m;
}
如果您使用的是C ++ 11,則可以用std::array
替換boost::array
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.