연관 배열 사용하기

Arduino:
연관 배열 사용하기

방법:

엄밀히 말해서, 아두이노는 상위 레벨 언어에서 찾을 수 있는 연관 배열에 대한 내장 지원이 없습니다. 그러나, 걱정하지 마세요. 구조체와 배열을 사용하여 이 기능을 모방할 수 있는 똑똑한 방법이 있습니다. 여기 다른 도시들의 온도를 저장하고 접근하기 위한 기본적인 “연관 배열"을 생성하는 간단한 예시가 있습니다.

먼저, 도시(키)와 그 온도(값)를 저장할 구조체를 정의하세요:

struct CityTemperature {
  String city;
  float temperature;
};

다음으로, CityTemperature 객체의 배열을 초기화하세요:

CityTemperature temperatures[] = {
  {"New York", 19.5},
  {"Los Angeles", 22.0},
  {"Chicago", 17.0}
};

특정 도시의 온도를 접근하고 표시하는 방법은 다음과 같습니다:

void setup() {
  Serial.begin(9600);
  for(int i = 0; i < 3; i++) {
    if(temperatures[i].city == "Los Angeles") {
      Serial.print("Los Angeles의 온도는: ");
      Serial.println(temperatures[i].temperature);
    }
  }
}

void loop() {
  // 여기에는 현재 아무것도 없습니다.
}

이 코드를 실행하면 다음과 같은 출력을 얻을 수 있습니다:

Los Angeles의 온도는: 22.0

심층 탐구

역사적으로, C와 C++ 같은 프로그래밍 언어들(아두이노 구문이 파생된 언어들)은 내장 연관 배열이 없어 위와 같은 우회 방법을 써야 했습니다. 이 접근법은 상대적으로 간단하지만, 데이터 크기가 증가함에 따라 O(n) 조회 시간 때문에 규모가 커지면 잘 확장되지 않습니다.

파이썬과 같은 언어는 사전을 제공하고, 자바스크립트에는 이 목적으로 객체가 있으며, 둘 다 키-값 쌍을 관리하는 데 훨씬 더 효율적입니다. 아두이노에서 성능과 효율성이 중요해지면, 개발자들은 라이브러리를 통해 구현된 해시 테이블 같은 더 전문화된 데이터 구조를 선택할 수 있습니다.

아두이노가 기본적으로 연관 배열을 지원하지 않음에도 불구하고, 커뮤니티는 HashMap과 같은 라이브러리를 개발하여 프로젝트에 추가함으로써 DIY 접근법보다 더 나은 성능으로 유사한 기능을 제공할 수 있습니다. 이러한 라이브러리는 일반적으로 특히 더 복잡한 프로젝트에 대해 연관 배열을 관리하는 더 우아하고 효율적인 수단을 제공합니다.