gpt4 book ai didi

c++ - 在多个函数之间共享一个 vector ,我的程序没有按预期工作。

转载 作者:行者123 更新时间:2023-11-30 01:12:35 26 4
gpt4 key购买 nike

我目前正在尝试制作一个允许我将字符串添加到字符串 vector 的小型控制台应用程序,但我遇到了一些问题。虽然这段代码看起来应该可以工作,但由于某种原因,尝试将名称插入名称 vector 并列出名称 vector 似乎不起作用。

   #include "stdafx.h"
#include <iostream>
#include <string>
#include <vector>

//Add a name to the vector
void AddName(std::vector<std::string> names)
{
std::string name;

std::cout << "Enter full name.";
std::cin.ignore();
std::getline(std::cin, name);

names.push_back(name);
}

//List all names within vector
void ListNames(std::vector<std::string> names)
{
std::vector<std::string>::const_iterator iter;

for (iter = names.begin(); iter != names.end(); iter++)
{
std::cout << *iter << "\n";
}
}

//Main function
int main()
{
std::vector<std::string> names;

int menuChoice = 0;

do
{
std::cout << ("1: Add Name.");

std::cin >> menuChoice;

switch (menuChoice)
{
case 1:
AddName(names);
break;

case 2:
ListNames(names);
break;

}
} while (menuChoice != 3);

std::string barn;
std::cin >> barn;

return 0;
}

感谢您的帮助!

最佳答案

程序正在制作 vector 的完整拷贝。这意味着每个函数中的版本都是独立的。

void ListNames(std::vector<std::string> names)

根据深度复制的参数创建一个新 vector 。 (可以共享内部对象。

void ListNames(std::vector<std::string> & names)

发送现有 vector ,允许对其进行修改。

关于c++ - 在多个函数之间共享一个 vector ,我的程序没有按预期工作。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33845878/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com