2013-01-15 89 views
1

首先我想说,如果这是一个转发,请回答这个问题。返回布尔数组

我创建了一个函数,它检查游戏循环中的某些对象,然后在检查返回true或false时返回一个布尔值,这个函数在我的函数里总共运行了5次。我想知道是否有可能从函数中返回所有5个布尔值的数组?下面是我尝试写的伪代码的例子:

Bool funcName(obj obj[]) 
    { 
     for (int i = 0; i < 5; i++) 
     { 
      boolVal[i]=ChckFunc(obj[i]); 
     } 
     return boolVal[]; 
    } 

感谢所有帮助

+0

可能的重复:[/questions/4264304/howto-return-a-array-in-ac-method](http://stackoverflow.com/questions/4264304/howto-return-a-array-in-ac-方法) –

+0

@Aposperite:我想说可能的重复不是因为它使用动态大小的数组,这更像是修复大小的数组。 –

回答

4

你可以返回一个std::array

std::array<bool, 5> funcName(obj obj[]) 
{ 
    std::array<bool, 5> boolArray; 
    for (int i = 0; i < 5; i++) 
    { 
     boolArray[i]=ChckFunc(obj[i]); 
    } 
    return boolArray; 
} 

或使用std::vector如果你有一个可变数量的物体检查

std::vector<bool> funcName(obj obj[], int count) 
{ 
    std::vector<bool> boolArray; 
    for (int i = 0; i < count; i++) 
    { 
     boolArray.push_back(ChckFunc(obj[i])); 
    } 
    return boolArray; 
} 
+0

谢谢我会试一试。 – Elliott

+0

它更好地返回一个指针而不是副本。它浪费了计算时间。请参阅我的答案以获取示例代码。 – theV0ID

+0

您可以返回一个指针,但我希望当我们按值返回时,向量的堆分配成本将高于复制构造的成本(加上额外的堆栈使用)。如果这种优化级别对您的程序很重要,那么将会值得分析这两个版本。 – simonc

0
std::array<bool, 5> funcName(Obj const obj[])