說我從函數f(a,b)
得到{1,2}
(它不管什麼f
是/),我想將它存儲到int s[2]
。我會怎麼做?看來我不能只是做int s[2] = f(a,b)
,我不能分開f
的輸出,因爲沒有變量來獲取值。 f(a,b)[0]
不起作用。將數組轉換爲變量
Q
將數組轉換爲變量
1
A
回答
3
這一切都取決於f
究竟返回什麼。你不能簡單地return {1, 2};
,所以它必須返回別的東西。它是一個衰減的數組指針嗎?一個std::vector
?
如果它是一個指針,返回指針,然後分配值。
int* p = f(a, b);
s[0] = p[0];
s[1] = p[1];
如果s
是大於兩個元素,那麼這將是更好地使用std::copy
從<algorithm>
:
int* p = f(a, b);
std::copy(p, p + 2, s); // where 2 is the size of the array.
2
使用std::array
陣列封裝,而不是:
std::array<int, 2> f(int, int);
std::array<int, 2> result = f(1, 2);
2
返回兩個從功能上看,我更喜歡std::pair
:
#include <utility>
std::pair<int, int> f()
{
return std::make_pair(1, 2);
}
int main()
{
std::pair<int, int> p = f();
int s[2] = {p.first, p.second};
}
如果數組已經存在,你可以通過boost::tie
使分配更加容易:
boost::tie(s[0], s[1]) = f();
1
你可以複製它,在的memcpy(DEST,F(1,2),大小)。
或者您可以只返回一個結構。將數組包含在一個結構中以便通過運算符=()輕鬆複製它是一個古老的技巧。例如: -
struct Foo { int a, b };
Foo f(int, int);
int main()
{
Foo myF = f(1,2);
}
的結構包裝變成有用以後,當你的代碼的發展,以及您決定返回第三值。作爲一個結構意味着你可以使其向後兼容的變化,並避免更改儘可能多的其他代碼...
+0
喜歡使用'struct'的第二部分。不喜歡'memcpy'部分。 – Arun 2010-10-26 05:09:57
相關問題
- 1. 將數組值轉換爲變量
- 2. 將變量轉換爲字節數組
- 3. 將數組變量轉換爲csv
- 4. 將變量數組轉換爲std :: tuple
- 5. 將數組變量轉換爲另一個函數變量
- 6. 將數組存儲爲變量然後轉換回數組
- 7. 將JavaScript變量轉換爲PHP變量
- 8. 將python變量轉換爲javascript變量
- 9. 將JavaScript變量轉換爲C#變量
- 10. 將分類變量轉換爲數字
- 11. 將日期變量轉換爲數字
- 12. 將數字變量轉換爲POSIXct
- 13. 將浮點變量轉換爲整數?
- 14. 熊貓:將多個變量轉換爲一組虛擬變量
- 15. 將Eigen :: PermutationMatrix.indices()轉換爲數組/矢量
- 16. 將矢量轉換爲數組
- 17. 將文本數組轉換爲向量
- 18. 爲什麼format()將數字變量轉換爲字符變量?
- 19. PHP找到數組並將其轉換爲變量
- 20. 使用jQuery將javascript數組轉換爲單個變量
- 21. 使用javascript將JSON數組轉換爲單個變量
- 22. 將PHP數組轉換爲可用變量
- 23. 在javascript中將變量值轉換爲(返回)數組?
- 24. 如何將byte []數組轉換爲字節類型變量?
- 25. 將1和0的數組轉換爲二進制變量
- 26. 將json格式變量轉換爲javascript數組
- 27. 將結果集變量轉換爲數組
- 28. 將年齡變量轉換爲序數變量
- 29. 將數值變量轉換爲SAS時間變量
- 30. 將數組轉換爲TreeView:JavaFX8
你如何從'f'獲得'{1,2}'?你不能返回一個數組......' – 2010-10-25 20:33:45
'f()'有什麼返回類型? – 2010-10-25 20:37:53
'f'的簽名是什麼?或者至少,f是什麼類型的返回類型? – 2010-10-25 20:38:09