试图掌握C++并且无法弄清楚为什么这不能打印出矢量<string>条目的名称



因此,此代码不会打印出矢量游戏库中的条目

最初我只是使用gameLibrary.pushback("(函数来添加它们,效果很好。

我只是想弄清楚为什么这不起作用。当(至少在我看来是在做同样的事情(

#include <iostream>
#include <vector>
#include <string>
using std::cout;
using std::vector;
using std::string;
void addGame(vector<string> gameLibrary, string gameName);
int main()
{
vector<string> gameLibrary;
vector<string>::iterator editIter;

addGame(gameLibrary, "game");
addGame(gameLibrary, "game 2");
cout << "Your library: " << std::endl;
for (editIter = gameLibrary.begin(); editIter != gameLibrary.end(); ++editIter)
{
cout << *editIter << std::endl;
}

return 0;
}

void addGame(vector<string>gameLibrary, string gameName)
{
gameLibrary.emplace_back(gameName);
}

addGame不得接收其通过复制填充的矢量。它必须通过引用或指针传递。

引用传递示例:

void addGame(vector<string>& gameLibrary, string gameName)
{
gameLibrary.emplace_back(gameName);
}

否则,副本将被修改,因此main中声明的向量将保持不变。

请阅读传递值与引用的关系。在函数中,通过值传递数组,这意味着只有数组的值被复制到函数中。

函数内部对数组的任何更改都不会反映回来。如果你需要,你需要通过引用传递你的数组

请看这个答案:在C++中,向量是通过值传递给函数还是通过引用传递给函数

相关内容

最新更新