[英]How do you declare a pointer to a function that returns a pointer to an array of int values in C / C++?
[英]C++: How do you create a return function that returns a vector/array?
这就是代码背后的动机。 有一个男孩叫鲍勃,今天是他的生日。 他邀请50个以上的朋友,但并非所有的朋友都想给他买礼物。 鲍勃收到了50份礼物,尽管其中有些是空的。 他的好朋友告诉他关闭第二个盒子。 对于第三个盒子,他应该将每个关闭状态更改为打开状态,并将每个打开状态更改为关闭状态。 他继续对第n个小于50的第n个框执行此操作。最后打开的框将具有礼物。
本来可以帮助我为数学课解决一个问题,但是我并不了解C ++编程的所有复杂方面。 我希望我的字符串getValue(vector&arr)返回一个数组/向量。 这段代码没有编译,但是显示了我正在尝试执行的操作。
#include <iostream>
#include <vector>
#include<algorithm>
using namespace std;
string getValue(vector<string> &arr);
int main()
{
vector<string> myArr(2);
vector<string> newArr(2);
for(int i=2; i <= 50; i++)
{
if(i%2==0)
{
myArr.push_back("close");
}
else
{
myArr.push_back("open");
}
}
newArr = getValue(myArr);
for(int i=2; i <=50; i++)
{
cout << i << " " << newArr[i] << endl;
}
}
string getValue(vector<string> &arr)
{
for(int i=2; i <=50; i++)
{
if(arr[i]=="close")
{
arr[i]="open";
}
else if(arr[i]=="open")
{
arr[i]="close";
}
}
return arr;
}
您是通过引用将向量传递给getValue()
的,这意味着您对该函数所做的更改将影响原始向量(换句话说,您不是在向量的副本上进行操作-实际上是在向量)。
因此,您不需要从getValue()
返回任何内容-只需使其void
,它就可以执行您想要的操作。
string getValue(vector&arr)-返回类型是字符串,而不是vector。 您需要更改其返回类型或将其设置为none。
PS:newArr = getValue(myArr); 它在SCOPE后面,并且定位错误...该死,第三个PS,分配了错误的代码规则
您不能使string getValue(vector<string> &arr)
返回数组/向量。 它只能返回一个string
。 如果要让函数返回数组/向量,则必须在函数签名中这样说。
对于语法部分:
函数的返回类型是字符串。 将其更改为vector,以使您的功能正常工作。
您可以简单地全局声明向量。 这将消除将其传递给函数以及将其返回的需要。
对于逻辑部分:
您的问题是,Bob切换了每个第三个框,但是在程序中,Bob更改了每个框(如果关闭)的打开状态以及每个框(如果打开的关闭)状态。 如果您在问题中所写的内容正确,则您的代码应如下所示。
#include <iostream>
#include <vector>
using namespace std;
void getValue();
vector<string> myArr(2);
int main()
{
for(int i=2; i <= 50; i++)
{
if(i%2==0)
{
myArr.push_back("close");
}
else
{
myArr.push_back("open");
}
}
getValue();
for(int i=2; i <=50; i++)
{
cout << i << " " << myArr[i] << endl;
}
}
void getValue()
{
for(int i=3; i <=50; i+=3)
{
if(myArr[i]=="close")
{
myArr[i]="open";
}
else if(myArr[i]=="open")
{
myArr[i]="close";
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.