我正在尝试在C ++中定义和使用二维数组
const float twitterCounts[][5] = {
{1,0,0,0,0},
{0,2,0,0,0},
{0,0,3,0,0}
};
像这样回复:
const float ??? TwitterLiveData::data() {
return twitterCounts;
}
并像这样使用
float x = TwitterLiveData::data()[1][1];
静态访问器的正确签名是什么?
答案 0 :(得分:5)
您不能返回数组,但可以将指针返回到其第一个元素或对数组的引用。您只需在签名中输入正确的类型:
const float (*TwitterLiveData::data())[5] {
或者
const float (&TwitterLiveData::data())[3][5] {
答案 1 :(得分:3)
请参阅:https://stackoverflow.com/a/10264383/365496
摘要:
#include <array>
const std::array<std::array<float,5>,3>
twitterCounts = {
{1,0,0,0,0},
{0,2,0,0,0},
{0,0,3,0,0}
};
const std::array<std::array<float,5>,3>
TwitterLiveData::data() {
return twitterCounts;
}
您可能不希望按值返回数组,因为这可能太昂贵了。您可以改为返回对数组的引用:
const std::array<std::array<float,5>,3> &TwitterLiveData::data();
在任何一种情况下,您所需的语法float x = TwitterLiveData::data()[1][1];
都有效。
答案 2 :(得分:0)
这取决于你的编译器,但大多数情况下双数组的名称都算作双指针。 所以在你的情况下,twitterCounts是一个浮动**。