遍历 cpp 中的数组
Traverse though array in cpp
我想知道这是否是遍历 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 中,您也可以执行此操作,甚至不必这样做编写您自己的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;
}
将它们放在一些通用包含的标题中。
仅当数组后的数据小于零时,这才有效。在典型情况下,你不能假设这一点,所以虽然这个循环现在可能有效,但最终它会中断。你应该做的是从零开始循环,直到达到数组的长度:
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';
}
相关文章:
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- 如何在cpp.中使用协议缓冲区存储大缓冲区/数组(char/int)
- 不同大小的向量数组的大小 cpp
- 如何循环访问 cpp 中的函数返回的字符指针数组
- 为什么我的 cpp 数组大小是 4 的倍数?
- 如何在 llvm 的 cpp api 中使用 CreateInBoundsGEP 来访问数组的元素?
- 如何使用 PHP-CPP 在 PHP 类中添加静态数组
- cpp 数组 - 分配常量索引有效,而非常量索引不起作用
- 将特定索引处的字符数组内容与字符文字 - cpp 进行比较
- 为什么当我在 CPP 的初始化中指定多维数组时,它必须有边界
- 通过矢量下标访问 Fortran 数组,相当于 cpp
- 如何在 CPP 中将 Typedef basic_string字符串转换为<char>字节数组
- 在 GRPC 中使用字节数组 (cpp)
- 如何使用 cpp 消除 2d 数组中的边框元素
- cpp 初始值设定项太多 - 数组中的结构中的结构
- 2D 数组在 CPP 中查找行的总和
- 具有不同构造函数参数的 CPP 对象数组
- 检查 CHAR 多维数组 CPP 中的值
- 将字符串转换为字节(无符号字符)数组cpp
- CSV 文件转换为带换行符的 2D 数组 CPP