2013-01-15 134 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[])