C++ 98 阵列大小
C++ 98 array size
我只是想知道是否有一种方法可以在不指定数组大小的情况下分配数组大小 C++98.
例如,这是 C++11 中的代码,工作正常:
int main(){
int array[]={12,3124,126,35742,3,41234,2};
for (int var: array){
cout << var << endl;
}
return 0;
}
但是我可以在 C++98 中执行此操作还是必须指定数组大小?
int main(){
int array[]={12,3124,126,35742,3,41234,2};
for (int i=0; i<array.size ; i++){
cout << array[i] << endl;
}
return 0;
}
当然。您可以创建一个模板函数,该函数通过引用获取数组并推断大小,然后返回该大小。
template<typename T, size_t N>
size_t array_size(T(&)[N]) {
return N;
}
int main(){
int array[]={12,3124,126,35742,3,41234,2};
for (size_t i=0; i<array_size(array); i++){
cout << array[i] << endl;
}
}
这种方法比使用sizeof(array)/sizeof(array[0])
的一个好处是,如果它实际上是一个指针,它不会给你一个不正确的答案array
。它根本无法编译。
我不知道你提到的array.size
的东西,但这已经足够了。
int main()
{
int array[]={12,3124,126,35742,3,41234,2};
for (int i=0; i < sizeof(array)/sizeof(array[0]); i++)
{
cout << array[i] << endl;
}
return 0;
}
相关文章:
- OpenMP阵列性能较差
- 如何将三维尺寸不固定的三维阵列展平为一维阵列
- 当我的阵列太大时出现分段错误
- 位阵列上的快速AND运算
- 阵列必须使用大括号封闭的初始器进行初始化
- 没有从阵列<float>到阵列<int>的可行转换
- C++动态安全 2D 交错阵列
- 将平面阵列重塑为复杂的特征类型
- 如何使用英特尔 PIN 捕获阵列的所有负载?
- 为什么我能够为阵列分配比计算机实际拥有的内存更多的内存
- 库特<<恩德尔;不适用于打印 2D 阵列
- 数组类 阵列的打印输出
- 从较小的阵列到较大的阵列的元素级转换
- 仅在大型阵列上出现合并排序分段错误
- 从阵列C++中删除重复项
- 阵列的大小在C++中是否灵活?
- 反转阵列中的正序列
- 具有可变尺寸的 C++ 2D 阵列
- 二维阵列的动态分配
- 重新增长阵列时出错:写入时缓冲区溢出