Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数组元素从未成功添加?(C++) 我对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; }_C++_Hashtable_Stdarray - Fatal编程技术网

数组元素从未成功添加?(C++) 我对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; }

数组元素从未成功添加?(C++) 我对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; },c++,hashtable,stdarray,C++,Hashtable,Stdarray,您需要将数据变量作为引用传递- void add(string str, array<string, 2000> &data) 这里所做的是按值传递,所以一旦函数结束,数据的值就会被销毁。您需要传递数据变量作为引用- void add(string str, array<string, 2000> &data) 这里所做的是按值传递,所以一旦函数结束,数据的值就会被销毁。尝试按引用传递数据,即 void add ( string str, array&

您需要将数据变量作为引用传递-

void add(string str, array<string, 2000> &data)
这里所做的是按值传递,所以一旦函数结束,数据的值就会被销毁。

您需要传递数据变量作为引用-

void add(string str, array<string, 2000> &data)

这里所做的是按值传递,所以一旦函数结束,数据的值就会被销毁。

尝试按引用传递数据,即

void add ( string str, array<string, 2000>& data ){...}

因为当您退出while循环时,i仍将递增。

尝试通过引用传递数据,即

void add ( string str, array<string, 2000>& data ){...}

因为当您退出while循环时,我仍然会递增。

makeHash函数在哪里?makeHash函数在哪里?