Карты и массивы - PullRequest
       13

Карты и массивы

0 голосов
/ 02 февраля 2012

Я работаю над проектом для школы и пытаюсь создать карту, которая использует массив размера 2 в качестве индекса для карты. Я даже не уверен, возможно ли это, так как я не знаю, смогу ли я получить доступ к элементам карты (поскольку я действительно не знаю, как я мог бы ссылаться на весь массив по значению). В основном я пытаюсь использовать индекс карты в качестве системы координат для строк. Если бы кто-нибудь мог сообщить мне, возможно ли это, и если это так, то какой синтаксис будет, это было бы очень полезно. Спасибо! Я делаю этот проект в C ++

Ответы [ 2 ]

1 голос
/ 02 февраля 2012

Если вы используете Java, вы можете использовать один из подходов - заключить массив в класс, а затем реализовать hashCode и , равный . Эти методы представляют собой механизм, который позволяет другим объектам идентифицировать экземпляр этого класса. Например, класс 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 голосов
/ 02 февраля 2012

Ну, самый простой способ - просто объединить значения в строку (при условии, что это что-то простое). Если вы используете int или float, просто представьте {1.2, 4.3} в виде строки "1.2,4.3" и создайте ключи карты типа строка.

Ответ ggreiner - хорошая реализация Java, и я включил его комментарий для реализации C #, но я не смогу помочь вам с генерацией хеш-кода в C ++. Однако, если это для домашней работы, преобразование массива в строку будет работать и, вероятно, то, что ожидает ваш инструктор.

...