4

我正在尝试在 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];

静态访问器的正确签名是什么?

4

3 回答 3

5

您不能返回数组,但可以返回指向其第一个元素的指针或对数组的引用。您只需在签名中输入正确的类型:

const float (*TwitterLiveData::data())[5] {

或许

const float (&TwitterLiveData::data())[3][5] {
于 2012-04-25T18:15:39.300 回答
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];有效。

于 2012-04-25T18:17:49.007 回答
0

这取决于您的编译器,但大多数时候双数组的名称算作双指针。所以在你的情况下 twitterCounts 是一个浮点数**。

于 2012-04-25T18:13:20.040 回答