C++ 98 阵列大小

C++ 98 array size

本文关键字:阵列 C++      更新时间:2023-10-16

我只是想知道是否有一种方法可以在不指定数组大小的情况下分配数组大小 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;
}