繁体   English   中英

静态2d数组

[英]Static 2d array

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

静态存取器的正确签名是什么?

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

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

或者可能

const float (&TwitterLiveData::data())[3][5] {

请参阅: 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]; 作品。

它取决于您的编译器,但大多数情况下双数组的名称计为双指针。 所以在你的情况下,twitterCounts是一个浮动**。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM