与此代码工作:
int myArray[10];
for(int i = 0; i < myArray.size(); i++)
cout << myArray[i] << endl;
编译器错误:
错误:请求构件“大小”在“myArray的”,这是非类类型“INT [10]” |
我必须失去了一些东西很明显,但我没有看到它。
与此代码工作:
int myArray[10];
for(int i = 0; i < myArray.size(); i++)
cout << myArray[i] << endl;
编译器错误:
错误:请求构件“大小”在“myArray的”,这是非类类型“INT [10]” |
我必须失去了一些东西很明显,但我没有看到它。
数组类型不是类类型,并且没有成员函数。 所以数组没有叫一个成员函数size
。 然而,由于阵列具有编译时固定的尺寸,你知道的大小是10
:
for(int i = 0; i < 10; i++)
cout << myArray[i] << endl;
当然,最好避免幻数,并把大小在命名常量的地方。 可替代地,有用于确定数组类型的对象的长度的标准库函数:
for(int i = 0; i < std::extent(myArray); i++)
cout << myArray[i] << endl;
你可以,但是,使用std::array
代替,它封装了一个数组类型的对象为你确实提供了一个size
成员函数:
std::array<int, 10> myArray;
for(int i = 0; i < myArray.size(); i++)
cout << myArray[i] << endl;
你想要sizeof
操作符:
int myArray[10];
for(int i = 0; i < (sizeof(myArray)/sizeof(myArray[0])); i++)
cout << myArray[i] << endl;
大小是不适合的C ++静态数组定义。 如果你必须使用一个静态数组,你需要跟踪数组的长度的另一个变量。
喜欢:
const int size = 10;
int arr[size];
for(int i = 0; i < size; i++){
cout << myArray[i] << endl;
}
在另一方面,如果它不使用静态数组的要求,我会建议你使用std ::向量来代替。
std::vector<int> arr;
for (int i = 0, max = arr.size(); i<max;i++){
[...]
}