创作不易,本篇文章如果帮助到了你,还请点赞 关注支持一下♡><)!!
主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步!
c++系列专栏:C/C++零基础到精通给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ
c语言内容:
专栏:c语言之路重点知识整合
【c语言】全部知识点总结
通常在我们遍历数组的时候,常用的写法是:
int main()
{
char arr[7] = "TianXi";
for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
{
cout << arr[i] << " ";
}cout << endl;
}
在C++新标准中,简化后的写法为:
type iterable[n];
for(type val:iterable) //type val = arr[i]
{
// do something with val
}
这种for循环就被称为增强for,也叫范围for循环
在增强for循环
中,我们不需要再通过计算数组长度遍历数组,增强for循环
会自动根据数组长度将数组中的每一个数据赋值给同类型的val
,我们只需要输出val
就遍历了数组
iterable
不止可以为数组,还可以是迭代的对象(比如支持begin、end操作的容器、string类型等)
上面遍历数组的代码通过简化就可以写成这样:
for (char v : arr)
{
cout << v << " ";
}cout << endl;
char
类型的v
变量存储了arr数组
中的每一位
自动根据数组长度遍历数组
输出结果为:
增强for循环可以遍历支持迭代器的容器类型或数组类型,例如std::vector
、std::list
、std::array
、int[]
而指针类型既不是容器类型又不是数组类型,不能使用增强范围for,可以使用传统的for
循环
char* p = new char[7] {"TianXi"};
for (char v : p)
{
cout << v << " ";
}cout << endl;
这个例子中p
是一个 char
类型指针,指向一个拥有7个元素的字符数组并且进行了初始化
由于 p
是一个指针变量,而非容器类型,无法直接使用范围for循环进行遍历操作
如果要遍历字符串,不用char指针指向char数组,直接使用string字符串:
(string字符串相关知识点:【C/C++】基础知识之string字符串)
char* p = new char[7] {"TianXi"};
//for(char v:p) 无法遍历
string str = "TianXi";
for (char v : str)
{
cout << v << " ";
}cout << endl;
使用增强for
循环能够简化代码编写和阅读,并且可以避免因手动控制迭代器而带来的错误。
在需要进行下标访问、修改元素等操作时还是传统for循环
更方便,不适合使用增强for循环
因此,使用哪种for循环,如何使用for循环,需要根据具体情况选择使用
大家的点赞、收藏、关注将是我更新的最大动力! 欢迎留言或私信建议或问题。 |
大家的支持和反馈对我来说意义重大,我会继续不断努力提供有价值的内容!如果本文哪里有错误的地方还请大家多多指出(●'◡'●) |