簡體   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