电影网站建设教程企业天眼查
2026/2/13 7:26:52 网站建设 项目流程
电影网站建设教程,企业天眼查,网站制作 符合百度,商丘市网站建设文章目录 目录 概要 accumulate copy 小结 概要 泛型算法是C标准库里的又一重要的组成部分#xff0c;泛型算法之所以被称为“算法”#xff0c;是因为它们实现了一些经典算法的公共接口#xff0c;例如#xff1a;排序和搜索#xff0c;“泛型”则意味着它们能够用…文章目录目录概要accumulatecopy小结概要泛型算法是C标准库里的又一重要的组成部分泛型算法之所以被称为“算法”是因为它们实现了一些经典算法的公共接口例如排序和搜索“泛型”则意味着它们能够用于不同类型的元素和多种容器类型不仅如此还可以其他类型的序列。泛型算法与C标准库中其他的内容之间的关系如下图所示。大多数泛型算法都定义在头文件algorithm不仅如此标准库还在头文件numeric中定义了一组数值泛型算法。一般情况下大多数算法并不直接操作容器而是通过两个迭代器所指定的范围进行操作。例如#includeiostream #includevector #includealgorithm using namespace std; int main() { int val42; vectorintv(n,0); auto resultfind(v.begin(),v.end(),val); return 0 }auto 是C11新特性的内容能够让编译器自动地帮我们判断类型在这段代码中如果查找到val则返回指向val的迭代器此迭代器可以看做一个指针如果未查找到则返回容器的尾迭代器即v.end()。从此例可以看出算法并不直接通过操作容器来对元素进行操作而是通过操作迭代器间接操作容器中的元素如下图下面介绍一些常见的算法count和count_ifcount是头文件algorithm中的一个算法它类似于find,接受一个迭代器和一个值作为参数。其返回给定值在容器中的次数。如#includeiostream #includevector using namespace std; int main() { vectorintv(5,0);//设置容器大小为5,同时容器中有n个0 for(int i0;i4;i) { v[i]i;//将0-3放入到容器中 } int val0; int ccount(v.begin(),v.end(),val); coutcendl;//输出容器中值为0的个数为2 return 0; }此count接收从v.begin()和v.end()这个范围内的迭代器并统计有多少个值为val的个数并返回这个个数。说到count不得不谈及它的兄弟count_ifcount_if与count的不同之处在于count_if的第三个参数接受一个bool类型的一元谓词即统计满足此谓词的数的个数该谓词可以为函数指针、函数对象、Lambda 表达式。如#include iostream #include vector #include algorithm int main() { // 1. 初始化一个简单的整数向量待统计容器 std::vectorint nums {1, 3, 5, 7, 2, 4, 6, 8, 9, 10}; // 2. 使用 count_if 统计「偶数」的个数Lambda 表达式作为条件谓词 // 格式count_if(容器起始迭代器, 容器结束迭代器, 条件谓词) int even_count std::count_if( nums.begin(), // 遍历起始位置第一个元素 nums.end(), // 遍历结束位置最后一个元素的下一个左闭右开 [](int num) { // Lambda 表达式接收单个元素返回 bool 类型条件 return num % 2 0; // 条件判断是否为偶数 } ); // 3. 输出统计结果 std::cout 向量中的偶数个数 even_count std::endl; return 0; }accumulateaccumulate是一种只读算法它定义在头文件numeric中此算法接受三个参数前两个指出需要求和的元素的范围第三个参数是和的初值。如#includeiostream #includevector #includenumeric//accumulate所在的头文件numeric int main() { vectorintv(5,1) int sumaccumulate(v.begin(),v.end(),0);//求v.begin()到v.end()这个范围中的数的和 std::coutsumendl;//输出所求的和 5 return 0; }copycopy又叫拷贝算法,copy是一个向目的位置迭代器的输出序列中的元素写入数据的算法此算法将输入范围中的元素拷贝到目的序列中。并且传递给copy的目的序列至少要包含于输入序列一样多的元素。我们可以用copy实现内置数组的拷贝例如#includeiostream #includealgorithm int main() { int arr[]{0,1,2,3,4}; int a[sizeof(arr)/sizeof(*arr)];//arr大小与a一样 auto retcopy(begin(arr),end(arr),a);//copy返回的是其目的位置迭代器(递增后的值)即a尾元素之后的位置容器则同理 return 0; }小结泛型算法是C标准库中的重要组成部分它们能提供一些经典算法的接口方便程序员对元素进行操作并且算法并不直接通过操作容器来操作数据而是通过操作迭代器间接操作数据。文章如有错误欢迎私信我我会及时解决如果我的内容对你有帮助和启发请点赞、评论、收藏。你们的支持就是我更新最大的动力那么我们下期再见

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询