我想知道这是否是一种在c ++中遍历数组的合适方法。
int array[] = {4,3,2};
int n = 0;
// traverse through array
while (array[n] >=0){
cout << array[n];
n++;
}
在我当前的问题中,它对整数数组进行排序。
答案 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中,您也可以这样做,而您甚至不必这样做
编写自己的begin
和end
版本。预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';
}