|
|
1
0
有不同的方法可以做到。 但是,一开始,开箱即用,你不能只“添加”到C中的数组中,而且,老实说,你不想这样做。 有几件事你可以试试。 一是假设大小。例如,如果您知道字符串中的字段不会超过100个,那么就可以对libcount使用100个字段。这“浪费”了内存,但它确实非常有效,因为它只分配一次。只要确保你检查了边界条件,如果超过100就发出一个错误信号,因为“它永远不会发生”。 现在,如果你在最后做了100件事,现在你知道你读了多少条,你就可以创建一个新的数组,完全按照你想要的大,从原始数组复制元素,释放它,然后返回新的数组。
同样,沿着这条路继续走下去,没有必要
如果你不想有任何限制,你仍然可以扩展以上的概念。 从一个原始数组开始(但是这一次,您需要分配它)。然后开始加油。当它满了,而且你有更多的,创建一个新的,更大的数组,把旧的复制到新的,然后释放旧的。 最后,您将在一个数组中拥有所有内容。但是,您不希望对每个元素都这样做。你不想一直复制4个字节,8个字节,12个字节。如果你这样做,你就把你的堆碎片化了一些可怕的东西,并且你复制的方式,方法很多。 相反,你要分批去做。10个条目,20个条目,40个条目。 最后,您可以像上面一样,最后一次将数组复制到一个大小正确的内存块中(或者,如果这个数组将在5毫秒后被返回并销毁,有点“谁在乎”末尾的多余部分)。 最后,当然,因为你在谈论C++,所以模板库中有一些东西为你做这些(不是我知道它是什么,我想你可以推一推向量)。但是,看,我几乎不能拼写C++,所以…不要对我的专业知识和细节推迟。 |
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |