0

我得到了一个结构,但我不知道它的大小(每次都不一样)。我想将此结构的一个字段中的最后一个位置设置为某个值。在伪代码中,我的意思是这样的: structureA.fieldB[end] = cert_value ;

我会在matlab中做但是我无法在c ++中找到正确的语法,你能帮我吗?

4

2 回答 2

3

在 Matlab 中,结构数据类型包含键值对,其中“值”可能是不同的类型。在 C++ 中,有一些可用的键值容器(关联容器,如 set、map、multimap),但它们通常存储单一类型的元素。如果我理解正确,您需要的是类似

“一个”:1

“二”:[1,2,5]

“三”:“名称”

这意味着您的结构类似于Python 字典

在 C++ 中,我听说使用具有真正不同类型的容器的唯一方法是使用boost::any,它被接受为这个问题的答案。

如果你用不同类型的元素打包一个容器,那么你可以使用容器的 end() 成员函数来获取最后一个元素。

于 2013-01-09T09:38:06.677 回答
1

您需要 sizeof,这为您提供了数组的大小(以字节为单位)。由于您想要最后一个元素的索引,因此您必须将此数字除以一个元素的字节数。你最终得到:

int index_end = sizeof(structureA.fieldB) / sizeof(structureA.fieldB[0]);
structureA.fieldB[index_end] = new_value;
于 2013-01-09T10:08:06.137 回答