![](/img/trans.png)
[英]How do I initialise a std::array field inside a struct with the contents of a variable length sequence container?
[英]How do I initialise a Pointer to a Object inside a std::array (container)?
我有這個數組:
std::array<dto_s, nQ> Q;
並且想要在 Q 中的對象上有另一個指針數組。(代表 DFA 的增量 function)
如何初始化數組?
我的問題是:數組中對象的數據類型是什么?
這不起作用:
std::array<dtos,nQ> deltafunction[nDelta];
如前所述,這些對象的類型是dto_s*
(或dtos*
,您使用了兩種不同的拼寫)。 在您的初始化代碼中,您將std::array
與 C 風格的 arrays ( [nDelta]
)混合。 如果你想要一個指針數組,請使用
std::array<dto_s*,nDelta> deltafunction;
(假設nDelta
是您需要的指針數)。 如果您需要一個指針數組(即Q
中每個 object 的數組,您的代碼暗示),您不應混合使用這兩種類型的 arrays 而是使用
std::array<std::array<dto_s*, nDelta>, nQ> deltafunction
但是對於數組成員的指針,請格外小心。 如果同時復制 arrays,則Q
副本的元素將位於新位置,但deltafunction
副本中的指針仍將指向Q
的元素。 這里有很高的錯誤風險。 我建議您不要使用指針作為Q
元素的標識,而是通過它們在Q
中的索引來引用它們。
特別是如果您在某個時候將代碼從std::array
更改為std::vector
是有風險的,因為只需添加一個std::vector
就可以重新分配(換句話說,元素可以移動到新位置)新元素。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.