我试图遍历以下arr数组。但Visual Studio显示它有错误。
void printArray(int* arr)
{
for (int i : arr)
{
cout << i << ",";
}
}
答案 0 :(得分:0)
在您的示例中,arr
不是数组,而是指针。因此,不可能仅从指针确定数组中的项目数:这就是为什么采用指向数组初始元素的指针的API也会占用该数组中元素的数量,例如:
void printArray(int *arr, size_t count)
由于数组中的项目数是未知的,因此arr
不能在范围循环中使用。
您将范围数据复制到std::vector
以在范围循环中使用它:
void printArray(int *arr, size_t count) {
for (int i : vector<int>(arr, arr+count)) {
cout << i << ",";
}
}
然而,传递std::vector
代替指针是一种更好的方法,可以用惯用的C ++代码实现相同的效果。