繁体   English   中英

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 如果要让函数返回数组/向量,则必须在函数签名中这样说。

对于语法部分:

  1. 函数的返回类型是字符串。 将其更改为vector,以使您的功能正常工作。

  2. 您可以简单地全局声明向量。 这将消除将其传递给函数以及将其返回的需要。

对于逻辑部分:

您的问题是,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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM