c++ - 计算存储在数组中的元素

标签 c++ arrays

我真的需要一些帮助...我详细说明了我的问题,我需要一个特定类型的数组,但在使用 for 结构从其他数组中检索值之前我不知道它的长度。事实上,我不想花时间再次通过几个循环,我想知道最好的方法。我应该使用堆栈和计数器,并在填充它之后实例化并填充数组吗?

RelAttr *tab;
//need to initialize it but how
/*several for loops retrieving values*/
   tab[i] = value;
/*end for loops*/

显然这段代码是不完整的,但事情就是这样完成的。而且我知道我不能在没有指定数组长度的情况下做矫揉造作...

谢谢你的帮助

最佳答案

只需使用 std::vector

std::vector<RelAttr> vec;

vec.push_back(a);
vec.push_back(b);
...

它透明地管理自己的增长。每次增长时,都会复制所有项目,但摊销成本为 O(1)。

存储也保证是连续的,所以如果你真的需要一个原始的 C 风格数组,那么你可以简单地这样做:

const RelAttr *p = &vec[0];

但是,只有当您有需要满足的旧版 C API 时,您才真正应该这样做。

关于c++ - 计算存储在数组中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9149131/

相关文章:

arrays - 如何通过位置循环合并数组中的值

javascript - 将 HTML 中的表单文本转换为 JS 中的数组

c - 尝试反转数组中的多个整数 - 想知道为什么我的代码不起作用

iphone - 动态数组返回 numberOfRowsInSection 中的计数

arrays - 在单独的 ViewController 中编辑 tableView 条目,并将编辑后的数据传回 tableView

C++调用父类(super class)

C++ 在枚举中有数组值?

c++ - 如何获取QGraphicsWidget的位置坐标?

c++ - 可 move 元素的 vector 会有效地调整大小吗?

C++ DirectX - 对 2D 网格进行纹理化