我是 C++ 的新手。我尝试实现一个非常简单的哈希表,然后我想看看我的哈希算法是否将元素放在了正确的位置。但是,显然该元素甚至根本没有添加到数组中:
void add(string str, array<string, 2000> data) {
int i = makeHash(str) % data.size();
while (data[i++ % data.size()].compare("") != 0)
continue;
data[i % data.size()] = str;
cout << "Added!"; // successfully prints, meaning str was added to data
}
int main() {
array<string, 2000> data;
string str = "The quick brown fox something something";
add(str, data);
for (int i = 0; i < data.size(); i++)
if (data[i].compare(str) == 0)
cout << i; // never prints... so str was never added to data?
return 0;
}
最佳答案
您需要传递data
变量作为引用 -
void add(string str, array<string, 2000> &data)
你在这里做的是按值传递,所以一旦你的函数结束,data
的值就会被销毁。
关于c++ - 数组元素从未成功添加? (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23307016/