网站首页 > 基础教程 正文
在c++中,for循环是传统的遍历一个集合(如数组array、向量vector)方法。foreach结构通常是指基于范围的for循环(C++11中引入),它使用for(declaration : range)的语法,这种循环用于遍历容器或者其他可以视作序列的对象。
1、传统的for循环
for循环的传统语法,是三段式的,即起始点、结束循环控制条件、步长递增。
int sum = 0;
for( int i = 1; i<=100; i++)
{
sum += i;
}
2、使用迭代器的for循环
对于标准模板容器,如vector、string,在用for循环进行遍历的时候,除了用.size()控制次数外,还可以采用迭代器的方式,迭代器相当于指针。如:
//用迭代器遍历vector<string>中的每个string
typedef std::vector<std::string>::iterator vecIter;
void traverseStringVectorByIterator(std::vector<std::string> vec)
{
vecIter iter =vec.begin();
for(iter = vec.begin(); iter != vec.end(); iter++)
{
std::cout << *iter << std::endl;
}
}
3、使用foreach的for循环
这种语法,优点是代码变得简洁许多。熟悉之后,比传统三段式语法的效率高。
//用foreach loop遍历一个string的每个字符
void traverseStringByForeachloop(std::string str)
{
for(char ch : str)
{
std::cout << ch << std::endl;
}
}
下面是完整的示例代码:
#include <iostream>
#include <vector>
//给冗长的迭代器,取一个简短的别名
typedef std::string::iterator strIter;
typedef std::vector<std::string>::iterator vecIter;
////用数组下标遍历字符串数组
void traverseStringArrayByIndex(std::string str[],int n);
//用foreach loop遍历vector<string>中的每个string
void traverseStringVectorByForeachloop(std::vector<std::string> &vec);
//用迭代器遍历vector<string>中的每个string
void traverseStringVectorByIterator(std::vector<std::string> vec);
//用string::iterator遍历一个string的每个字符
void traverseStringByIterator(std::string str);
//用foreach loop遍历一个string的每个字符
void traverseStringByForeachloop(std::string str);
int main()
{
// foreach loop = loop that eases traversal over a iterable data set.
std::string name[] = {"Bill Gates", "Steve Jobs", "Ren zhengfei","Elon Musk", "Chao dewang"}; //string array
std::vector<std::string> vec1({"Bill Gates", "Steve Jobs"});
std::vector<std::string> vec2 = {"Ren zhengfei","Elon Musk", "Chao dewang"};
// traverseStringArrayByIndex(name,5);
// traverseStringVectorByForeachloop(vec1);
// traverseStringVectorByIterator(vec2);
// traverseStringByIterator("Hello");
traverseStringByForeachloop("Coding the world");
return 0;
}
//用数组下标遍历字符串数组
void traverseStringArrayByIndex(std::string str[],int n)
{
std::cout << std::endl;
std::cout << "traverse a string array by index: \n";
for(int i = 0; i < n; i++)
{
std::cout << str[i] << std::endl;
}
}
//用foreach loop遍历vector<string>中的每个string
void traverseStringVectorByForeachloop(std::vector<std::string> &vec)
{
for(std::string str:vec)
{
std::cout << str << std::endl;
}
}
//用迭代器遍历vector<string>中的每个string
void traverseStringVectorByIterator(std::vector<std::string> vec)
{
vecIter iter =vec.begin();
for(iter = vec.begin(); iter != vec.end(); iter++)
{
std::cout << *iter << std::endl;
}
}
//用string::iterator遍历一个string的每个字符
void traverseStringByIterator(std::string str)
{
std::cout << std::endl;
std::cout << "traverse a string " << str <<" by string::iterator\n";
strIter iter;
for(iter = str.begin(); iter != str.end(); iter++ )
{
std::cout << *iter << std::endl;
}
}
//用foreach loop遍历一个string的每个字符
void traverseStringByForeachloop(std::string str)
{
for(char ch : str)
{
std::cout << ch << std::endl;
}
}
猜你喜欢
- 2024-10-19 C语言中的`for`关键字是一种循环控制结构
- 2024-10-19 写给所有人的编程思维-循环篇(for循环)
- 2024-10-19 在PLC编程中,循环语句FOR和WHILE怎么选?
- 2024-10-19 C语言for循环基本流程 c语言for循环程序
- 2024-10-19 C++20尝鲜:基于范围for c++ 范围for
- 2024-10-19 BAT批处理命令之for bat文件中for用法
- 2024-10-19 C语言for循环解析 c语言中for循环
- 2024-10-19 Java Web实战篇:增强for循环实现原理及for循环实战性能优化
- 2024-10-19 1分钟教你学会for循环 for循环教程
- 2024-10-19 C++阶乘:一个数的阶乘和一个范围的阶乘之和
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)