2013-05-26 73 views
3

我不確定這是什麼稱呼,所以我不知道該怎麼做才能學會如何做到這一點。如何創建一個使用字符串索引的整數的數組

我編程在C

我的int數組,那我期待與字符命名;

例如

char s1[21] = "firsta1" 
char s2[21] = "seconds2" 

等等等等

然後的整數類似,假設整數的數組數組稱爲索引。

index[s1] = 7 
index[s2] = 14 

等等等等

感謝,

+0

你想要c或什麼?你用來查找元素的完全字符串(關聯)? – Dineshkumar

+0

請使用C語言 – Max

回答

1

這被認爲是關聯數組。在shell編程中我們有關聯數組。在C++和java中,我們可以通過Maps [HashMap,TreeMap]實現此功能。

Map<Key,Value> 

key用於標識值;密鑰應該是唯一的。

我不認爲C爲此擁有內置設施。也許你可以通過其他方式實現這一點。

您創建這些字符串s [21] =「str」...將它傳遞給一些函數說散列。

hash(char *str) 
    { 
     // Keep a cache (a table here its array) 
     lookup the string in table; 
     if(present) 
      return index;   
     else 
      store str in table with appropriate index; 
    } 

使用

 array[hash(str)] 

做你想做什麼。這是我的想法,也可能有其他一些最好的方法。或者一些圖書館(例如:Boost)可能有關聯數組。

+0

@Max會完成你的意圖嗎? – Dineshkumar

+0

謝謝, 我這麼認爲。 我的問題是我不知道「s1」或「s2」等的價值,直到運行時(我正在閱讀文件並從那裏出發)。 – Max

-1

你正在尋找一個哈希表或哈希表(兩個名稱相同的東西)。這些不是數組,即使它們在某些語言中的名稱不正確(我在看你,PHP)。每個定義的數組都是一個內存區域,該區域以區域內的偏移量進行索引,這意味着您必須使用數字對其進行索引。

哈希映射在查找鍵之前對鍵應用散列函數,因此它們將字符串鍵轉換爲數字。

+0

它們是關聯數組。調用它們數組仍然非常有效。 https://en.wikipedia.org/wiki/Associative_array實際上,使用hash這個詞太具體,因爲這個問題並不一定關心實現是否涉及哈希。他想要的是以某種方式關聯的一組數據。 – xaxxon

相關問題