簡體   English   中英

C ++中Map中的Char 2D數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM