一、简介
这种循环写法是C++11引入的一种新的循环语法,称为范围-based for循环(range-based for loop)或者简称为foreach循环。
在这种循环中,可以遍历一个可迭代对象(如数组、容器等)中的元素,而不需要使用传统的索引方式进行遍历。
语法如下:
for(elemType elem: object) {
statements ;
}
每次循环中,elem都会被赋值为object中的一个元素,循环体中的代码可以使用elem来操作当前遍历到的元素。
二、例子
Leetcode 169:多数元素
给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。
思路:通过使用无序映射来统计数组中每个元素的出现次数,找出出现次数最多的元素作为主要元素。也通过范围-based for循环方便地对容器进行遍历。再通过“打擂台”的方式,维护变量majority
public:
int majorityElement(vector<int>& nums) {
unordered_map<int, int> counts; //unordered_map,用于记录元素出现次数
int majority = 0, cnt = 0;
for (int num: nums) {
++counts[num];
if (counts[num] > cnt) {
majority = num;
cnt = counts[num];
}
} //范围-based for循环
return majority;
}