2017-04-23 75 views
-1

例如,是否可以使用字符串或字符來索引數組?

double myArray[3] = {0.0}; 

myArray["SSN_1"] = 2.0; 
myArray["SSN_2"] = 3.0; 
myArray["SSN_3"] = 2.0; 

for(... how? ...) 
{ 
... Print ... but, how? ... 
} 

如果您有任何引用,請鏈接。

+3

不,它不是...... – OldProgrammer

+2

隨着4k代表,我會期待一個基本的搜索已成爲您的第一個停靠港。 –

回答

2

不在這是不可能的,只允許整數。

關聯容器可以用一個簡單的結構來建立像

struct double_map_item { 
    char *key; 
    double value; 
}; 

看看bsearch()的手冊頁例如,對於一個簡單的方法來找到通過自己的鍵值項。

當然,這是一個非常簡單的可能的實現,您應該閱讀有關哈希表的更完整和強大的實現。

關於this comment,在C字符常量的類型是int

array['x'] = value; 

是有效的,但要注意,這是不是真的有用,因爲

  1. 您只能使用一個單個字符。
  2. 您可能會使用比所需大小的數組。
  3. 您只有一組非常有限的可能指數。

注意:以下your own comment,還有就是你看到的C++代碼的機會。在C++中,可以重載[]運算符,以便它將const char *作爲參數,然後使用散列表或任何其他方法爲給定鍵找到匹配元素。

但是在c中,這是不可能的。

如果一個人實現在C++這樣的容器,下面的例子說明如何進行,請注意,這只是對基本概念的說明,你應該使用std::map代替,

#include <iostream> 
#include <map> 

class Array { 
public: 
    Array(); 
    double operator[](const char *const key); 
    void insert(const char *const key, double value); 

private: 
    std::map<const char *, double> m_items; 
}; 

Array::Array() 
{ 
} 

double 
Array::operator[](const char *const key) 
{ 
    return m_items[key]; 
} 

void 
Array::insert(const char *const key, double value) 
{ 
    m_items.insert(std::pair<const char *, double>(key, value)); 
} 

int 
main(void) 
{ 
    Array items; 

    items.insert("SSN_1", 2.0); 
    items.insert("SSN_2", 3.0); 
    items.insert("SSN_3", 2.0); 

    std::cout << items["SSN_1"] << std::endl; 
    return 0; 
} 
+0

字符是一個整數類型,所以它們可以作爲索引工作(雖然在大多數情況下不是非常有用)。 –

+0

我想我看到了某處,可能是字符串搜索算法的實現。 – anonymous

+0

但不是c,C++,因爲你可以重載'[]'運算符。 –

相關問題