一個小上下文:我試圖做一個非常簡單的哈希函數/哈希表爲described here。我基本上是第一步,根據它開頭的字母盲目地向數組添加一個鍵(不檢查空間是否被佔用)。我正在使用的代碼來做到這一點至今:字符串數組(字符串)的C++元素依賴於源字符串
int main(int argc, char **argv) {
char *arrayKeys[300];
std::string aName("Charles");
char *aNameCpy = new char[aName.size() + 1];
std::copy(aName.begin(), aName.end(), aNameCpy);
aNameCpy[aName.size()] = '\0';
int kPos = storeKey(arrayKeys, aNameCpy);
std::cout << "The new position in arrayKeys for 'Charles' is: " <<
kPos << "\ncontaining the text: " << arrayKeys[kPos] << std::endl;
delete[] aNameCpy;
return 0;
}
int storeKey(char **keys, char *key) {
int charLett = -1;
charLett = (int)key[0];
if(charLett != -1)
charLett = charLett - 65;
keys[charLett * 10] = key;
return charLett*10;
}
我的問題是,我怎麼能在原來的字符串添加到陣列(arrayKeys)它是完全分開的陣列,而不是依賴串?如果在打印數組鍵時刪除字符串副本(aNamCpy),則數組鍵會變成亂碼。我在將字符串發送給函數之前複製該字符串,因爲我需要一個非const字符串添加到arrayKeys數組(因此可以修改它),並且我查看的任何字符串方法似乎都會返回const。
(我試圖這樣做的另一個版本可以found here,但我寧願不初始化這樣的arrayKeys - 有一個明確的第二個維度(串)長度)
C++還是很新的給我,讓我不能弄清楚如何將字符串複製到arrayKeys中來處理非const部分。任何幫助將非常感激。
第一次嘗試將不使用char *在這種情況下,只使用std :: string(和std :: vector爲數組) – Mark
以前沒有使用過std :: vector,但我會研究,謝謝。 – Chase