gpt4 book ai didi

c++ - 当 C++ 中的数组大小未知时,如何在运行时将对字符串数组的引用作为函数参数传递?

转载 作者:行者123 更新时间:2023-11-28 01:31:52 25 4
gpt4 key购买 nike

下面这段代码工作正常。问题是我需要它在数组大小时未知时工作。在下面的示例中,我将值硬编码为 2。在现实世界中,我不知道大小。有没有一种方法可以修改代码,使其即使在不知道数组大小的情况下也能正常工作。

void namesArray(std::string (&numList)[2], std::string name)
{
//This is just place holder code. Please ignore the logic.
numList[ 0 ] = "Peter" + name;
numList[ 1 ] = "Bruce" + name;
}

int main()
{
std::string nameList[2];
namesArray( nameList, "Parker");
std::cout << nameList[0]<< std::endl;
std::cout << nameList[1] << std::endl;
return 0;
}

由于外部限制,我不能使用数组以外的任何其他数据类型(例如: vector )。

编辑:当我说大小未知时,我的意思是数组的大小直到运行时才知道。此外,我所展示的是对我的实际代码的过度简化。该函数只接受数组。

更新:感谢大家提供的解决方案。看起来我已经编写的代码在我的解决方案中有效。我知道当 vector 提供更大的灵 active 时使用数组是很奇怪的。但是,在处理遗留代码时,您有时别无选择。非常感谢所有回复的人的回答。这是非常有用的。

最佳答案

如果我理解你的问题,你可以使用模板机制来推导数组大小:

#include <iostream>
#include <string>

template <size_t N>
void namesArray(std::string (&numList)[N], std::string name) {
//This is just place holder code. Please ignore the logic.
numList[ 0 ] = "Peter" + name;
numList[ 1 ] = "Bruce" + name;
}

int main() {
std::string nameList[5];
namesArray( nameList, "Parker");
std::cout << nameList[0]<< std::endl;
std::cout << nameList[1] << std::endl;
return 0;
}

关于c++ - 当 C++ 中的数组大小未知时,如何在运行时将对字符串数组的引用作为函数参数传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51147175/

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