key, value 를 알맞은(?) 자료 구조에 넣기?

초보입니다.의 이미지

예를 들어 아래와 같은 key , value 값들이 있다고 할때

==name== ==value==
"Seoul" 500
"NewYork" 100
"Pusan" 400
: :

제 생각엔 2차원 배열로.. 관리가 가능 할 줄 알았습니다.
헌데.. 아래와 같이 사용했을때.. 2차원 배열은 알맞지 않단걸
알았습니다.

#include<stdio.h>
main()
{
int i;
char a[][8] = {"Seoul","NewYork","Pusan", ....};
for(i=0 ; i<5 ; i++)
printf("%s\n",a[i]);
}

위와 같이.. name 값(스트링) 만을 넣을 수가 있었습니다.

그렇담 key, value 를 넣기 알맞은 자료 구조는 무엇인가요???

위 자료를 넣고.. 검색에 사용할 생각입니다.

조언 부탁드리겠습니다.

dolsemix의 이미지

배열 말고도 구조체라는 것이 있지요...
키워드가 struct 였던가.... 기억이 가물가물 하네요 ^^;;
C 문법책 좀 찾아봐야겠습니다..

담배 고만 펴야겠다...

bugiii의 이미지

C++경우에 map< string, int > 정도면 손쉽게 해결할 수 있는 자료형태 같습니다.

C로 하시려면 자료 구조에 대한 좋은 텍스트를 구하시고, 해쉬나 맵 같은 자료 구조를 찾으시면 자세히 나와 있습니다.

litdream의 이미지

stdmap<class KEY, class VALUE>

삽질의 대마왕...

jenix의 이미지

strcut test
{
      char *name;
      int value;
}
.
.
.
void main(void)
{
    int i;
    struct test mycity[8];

    mycity[0].name = "Seoul\0";
    mycity[0].value = 15;
    .
    .
    .
    mycity[7].name = "NewYork\0";
    mycity[7].value = 33;

   for( i = 0; i < 8 ; i++ ) printf("%s \n",mycity[i].name);
}

---------------------------------------------------------------------------
http://jinhyung.org -- 방문해 보세요!! Jenix 의 블로그입니다! :D

yielding의 이미지

associative memory 형태의 자료구조를 쓰시려 하시군요
c++라면 위의 여러 분들이 말씀하신 map이 ok

c로 하시면 hash table을 쓰시던지 아니면
AVL tree등의 balance 트리를 inner representaion으로 쓰고 밖에 이 트리를 wrapping하는 function을 만들어서 쓰면 되겠네요.

Life rushes on, we are distracted