C++11新增的便利算法实例分析
C++11为我们提供了许多实用的 STL 算法,其中一些算法来自 Boost 库,可以大大提高我们的编程效率。在本文中,我们将介绍 C++11 中的一些便利算法,包括 for_each()
,transform()
和 sort()
,并提供代码示例进行演示。
for_each()
for_each()
算法允许我们对一个容器中的所有元素执行特定的函数操作。下面的示例演示了如何使用 for_each()
算法:
#include <iostream>
#include <vector>
#include <algorithm>
void print(int i) {
std::cout << i << std::endl;
}
int main() {
std::vector<int> nums = {1, 2, 3, 4, 5};
std::for_each(nums.begin(), nums.end(), print);
return 0;
}
该程序将输出:
1
2
3
4
5
在这个示例中,我们使用 for_each()
算法来遍历整个 nums
容器,并对每个元素调用名为 print()
的函数。
transform()
transform()
算法与 for_each()
算法类似,但它返回新的值而不是修改原始值。下面的示例演示了如何使用 transform()
算法:
#include <iostream>
#include <vector>
#include <algorithm>
int addTwo(int i) {
return i + 2;
}
int main() {
std::vector<int> nums = {1, 2, 3, 4, 5};
std::vector<int> addedNums(nums.size());
std::transform(nums.begin(), nums.end(), addedNums.begin(), addTwo);
std::for_each(addedNums.begin(), addedNums.end(), [](int i) { std::cout << i << std::endl; });
return 0;
}
该程序将输出:
3
4
5
6
7
在这个示例中,我们使用 transform()
算法来遍历整个 nums
容器,并对每个元素调用名为 addTwo()
的函数来计算新值。然后,我们将结果存储在一个新的容器中,并使用 for_each()
算法输出结果。
sort()
sort()
算法可用于对容器中的元素进行排序。下面的示例演示了如何使用 sort()
算法:
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> nums = {4, 2, 1, 5, 3};
std::sort(nums.begin(), nums.end());
std::for_each(nums.begin(), nums.end(), [](int i) { std::cout << i << std::endl; });
return 0;
}
该程序将输出:
1
2
3
4
5
在这个示例中,我们使用 sort()
算法对整个 nums
容器中的元素进行排序,并使用 for_each()
算法输出结果。
总结
本文介绍了 C++11 中的三个便利算法:for_each()
,transform()
和 sort()
。这些算法可大大提高编程效率,使我们的代码更加简洁和易于理解。我们还为每个算法提供了一个示例代码以演示其用法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c++11新增的便利算法实例分析 - Python技术站