确定阵列的大小
determining the size of an array
本文关键字:阵列 更新时间:2023-10-16
显示数组中有多少个的适当函数是什么?
int a[10];
a[0] = 1;
a[1] = 3;
所以我想要一些显示size of a = 2
的东西。
使用原始数组无法做到这一点。
考虑一个容器类,例如std::vector
:
std::vector<int> a;
a.push_back(1);
a.push_back(3);
std::cout << a.size() << "n"; // Displays "2"
听起来你需要一个动态调整大小的数组:
std::vector<int> a;
a.push_back(1);
a.push_back(3);
std::cout << a.size(); // 2
这个数组有10个元素。你只是碰巧分配了其中两个,但这并没有改变区域的大小。如果您希望simething跟踪您设置的元素,请使用std::vector<int>
和push_back()
:
std::vector<int> array;
array.push_back(1);
array.push_back(3);
int size = array.size();
Oil Charlesworth似乎是对的。之所以如此,是因为在编译时,无论该数组是否包含数据,都会为其留出(分配)一定量的内存。因此,使用sizeof(a)这样的命令总是会产生相同的结果。它将返回为数组分配的字节数。在这种情况下,数组是40字节,这是有意义的,因为int通常是4字节长*数组(10)的长度=40。
这可能因电脑而异,但至少,这是我在不久前的一篇教程中读到的,每种变量类型的分配大小似乎因电脑而异(或操作系统而异)。
我知道,这并没有多大帮助,但现在你至少知道为什么不能用原始数组来做这件事了。
相关文章:
- OpenMP阵列性能较差
- 如何将三维尺寸不固定的三维阵列展平为一维阵列
- 当我的阵列太大时出现分段错误
- 位阵列上的快速AND运算
- 阵列必须使用大括号封闭的初始器进行初始化
- 没有从阵列<float>到阵列<int>的可行转换
- C++动态安全 2D 交错阵列
- 将平面阵列重塑为复杂的特征类型
- 如何使用英特尔 PIN 捕获阵列的所有负载?
- 为什么我能够为阵列分配比计算机实际拥有的内存更多的内存
- 库特<<恩德尔;不适用于打印 2D 阵列
- 数组类 阵列的打印输出
- 从较小的阵列到较大的阵列的元素级转换
- 仅在大型阵列上出现合并排序分段错误
- 从阵列C++中删除重复项
- 阵列的大小在C++中是否灵活?
- 反转阵列中的正序列
- 具有可变尺寸的 C++ 2D 阵列
- 二维阵列的动态分配
- 重新增长阵列时出错:写入时缓冲区溢出