我得到一個結構,我不知道它的大小(每次都不一樣)。我想將此結構的其中一個字段的最後一個地方設置爲某個值。在僞代碼中,我的意思是這樣的: structureA.fieldB [end] = cert_value;C++結構字段的最後一個元素
我會在matlab中做到這一點,但我不能以某種方式在C++中找到正確的語法,你能幫助我嗎?
我得到一個結構,我不知道它的大小(每次都不一樣)。我想將此結構的其中一個字段的最後一個地方設置爲某個值。在僞代碼中,我的意思是這樣的: structureA.fieldB [end] = cert_value;C++結構字段的最後一個元素
我會在matlab中做到這一點,但我不能以某種方式在C++中找到正確的語法,你能幫助我嗎?
在Matlab中,structure數據類型包含鍵值對,其中「值」可以是不同的類型。在C++中,有一些可用的鍵值容器(關聯容器,如set,map,multimap),但它們通常存儲單一類型的元素。你需要的,如果我的理解是什麼權利是一樣的東西
「一」:1
「二」:[1,2,5]
「三」: 「名」
這意味着你的結構類似於Python dictionary。
在C++中,我聽說過使用真正不同類型的容器的唯一方法是使用boost::any,它被接受爲this question的答案。
如果用不同類型的元素打包容器,那麼可以使用容器的end()成員函數來獲取最後一個元素。
你需要sizeof,這給你的字節數組的大小。既然你想要最後一個元素的索引,你必須將這個數字除以一個元素的字節數。你最終得到:
int index_end = sizeof(structureA.fieldB)/sizeof(structureA.fieldB[0]);
structureA.fieldB[index_end] = new_value;
這個'structureA'包含'fieldB'的大小嗎? –
發佈一些代碼。你必須知道一些基於哪些可以決定的東西,因爲C++是一種靜態類型的語言! – Nawaz
fieldB是如何聲明的?它是什麼類型? – Agentlien