2012-02-02 37 views
0

我正在爲學校開展一個項目,我正在嘗試創建一個使用大小爲2的數組作爲地圖索引的地圖。我甚至不確定這是否可能,因爲我不知道我可以訪問地圖的元素(因爲我真的不知道我怎麼可以通過值引用整個數組)。基本上我試圖使用地圖索引作爲字符串的協調系統。如果任何人都可以告訴我,如果這是可能的話,如果它的語法是什麼,這將是一個很大的幫助。謝謝! 我正在做這個C++的項目地圖和陣列

+1

你使用什麼編程語言? – 2012-02-02 17:29:49

回答

1

如果使用Java,你可以使用的一種方法是用一個類包裝你的數組,然後實現hashCodeequals方法。這些方法是一種允許其他對象識別該類的實例的機制。例如,Map類使用hashCode作爲存儲和檢索該對象的關鍵字。

下面是你的包裝類的一個例子。

class Point { 
    private int[] coordinates; 


    public Point(int x, int y){ 
    this.coordinates = new int[]{x, y}; 
    } 
    @Override 
    public boolean equals(Object o){ 
    // implement equals as stated in the docs. 
    } 

    @Override 
    public int hashCode(){ 
    // implement hashCode as stated in the docs using coordinates[0] and coordinates[1] 
    } 

} 


class App { 
    public static void main(String[] args){ 
     Map<Point, String> map = new HashMap<Point, String>(); 
     map.put(new Point(1,2), "some string"); 
     // etc... 
    } 
} 
+0

C#的答案與此類似。你會使用Dictionary 並實現一個自定義的IEqualityComparer 2012-02-02 17:56:30

+0

我不得不在C++中做這個項目不幸,我真的沒有在java中做任何編碼。我猜測在C++中,@override基本上是對操作符的功能進行操作。如果你能讓我知道這是否正確,那會很棒。其餘的代碼非常有幫助!謝謝! – user1185736 2012-02-02 18:06:44

0

好,最簡單的方法是隻串聯值轉換成字符串如果您使用的整數和浮點數只是代表{1.2,4.3}爲一個字符串「1.2,4.3」(假設它的東西簡單)和使你的地圖鍵類型的字符串。

ggreiner的答案是一個很好的Java實現,我已經在他的C#實現中包含了他的評論,但我無法幫助您在C++中生成哈希代碼。但是,如果這是作業,將數組轉換爲字符串將會起作用,並且可能是您的教師期望的。