遍历cpp中的数组

时间:2014-04-03 17:28:27

标签: c++ arrays traversal

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

     int array[] = {4,3,2};

     int n = 0;

    // traverse through array

    while (array[n] >=0){

    cout << array[n];
    n++;

   }

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

5 个答案:

答案 0 :(得分:3)

为什么你的东西会起作用?大多数时候,它 韩元&#39;吨。如果您的数组包含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;
}

将它们放入一些普遍包含的标题中。

答案 1 :(得分:1)

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

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

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

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

长话短说:不。你的循环在100%的时间都不会起作用,因此你不应该使用它。

答案 2 :(得分:0)

试试这个:

    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 ];
    }

答案 3 :(得分:0)

在此假设您没有分配值的索引将包含-ve个数字,但这不是真的。

您应该始终使用数组的大小遍历:

for(i=0;i<size;i++) //here size is the size of the array
{
// operation on array
}

答案 4 :(得分:0)

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';
}