一个小上下文:我试图做一个非常简单的哈希函数/哈希表为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