遍历 cpp 中的数组

Traverse though array in cpp

本文关键字:数组 cpp 遍历      更新时间:2023-10-16

我想知道这是否是遍历 c++ 数组的合适方法。

     int array[] = {4,3,2};
     int n = 0;
    // traverse through array
    while (array[n] >=0){
    cout << array[n];
    n++;
   }

在我当前的问题中,对整数数组进行排序对我有用。

你到底为什么要这样做? 大多数时候,它不会。 如果你的数组包含0,它显然不会,如果你的数组不包含0,它很可能也会继续远(导致未定义的行为)。

遍历数组:

for ( int n: array ) {
    std::cout << n << std::endl;
}

或者在 C++11 之前:

for ( int* current = begin( array ); current != end( array); ++ current ) {
    std::cout << *current << std::endl;
}

在 C++11 中,您也可以执行此操作,甚至不必这样做编写您自己的beginend版本。 在 C++11 之前,您将需要:

template <typename T, size_t n>
T* 
begin( T (&array)[n] )
{
    return array;
}
template <typename T, size_t n>
T*
end( T (&array)[n] )
{
    return array + n;
}

将它们放在一些通用包含的标题中。

仅当数组后的数据小于零时,这才有效。在典型情况下,你不能假设这一点,所以虽然这个循环现在可能有效,但最终它会中断。你应该做的是从零开始循环,直到达到数组的长度:

for (int i = 0; i < 3; ++i)
    cout << array[i];

或者,您可以使用 C++11 中的新 range-for 循环:

for (int i : array)
    cout << i;

长话短说:没有。您的循环不会在 100% 的时间内工作,因此您不应该使用它。

试试这个:

    int array[] = {4,3,2};
    // number of elements in array
    int const n = sizeof( array ) / sizeof( array[ 0 ] );
    // traverse through array and print each element
    for( int i = 0; i != n; ++i ) {
         cout << array[ i ];
    }

在这里,您假设没有您分配值的索引将包含一个-ve数字,但事实并非如此。

应始终使用数组的大小进行遍历:

for(i=0;i<size;i++) //here size is the size of the array
{
// operation on array
}
int array[] = {4,3,2};
for (size_t i = 0; i < 3; ++i)
{
    std::cout << array[i] << 'n';
}

C++11

for (int x : array)
{
    std::cout << x << 'n';
}