当前位置: 首页 > news >正文

jquery特效的网站合肥滨湖建设指挥部网站

jquery特效的网站,合肥滨湖建设指挥部网站,官网seo,wordpress初级教程老左概述: 算法主要是由头文件algorithm functional numeric组成。 algorithm是所有STL头文件中最大的一个#xff0c;范围涉及到比较、 交换、查找、遍历操作、复制、修改等等 numeric体积很小#xff0c;只包括几个在序列上面进行简…概述: 算法主要是由头文件algorithm functional numeric组成。 algorithm是所有STL头文件中最大的一个范围涉及到比较、 交换、查找、遍历操作、复制、修改等等 numeric体积很小只包括几个在序列上面进行简单数学运算的模板函数 functional定义了一些模板类,用以声明函数对象。 1 常用遍历算法 学习目标 掌握常用的遍历算法 算法简介 for_each //遍历容器transform //搬运容器到另一个容器中 1.1 for_each 功能描述 实现遍历容器 函数原型 for_each(iterator beg, iterator end, _func); // 遍历算法 遍历容器元素 // beg 开始迭代器 // end 结束迭代器 // _func 函数或者函数对象 示例 #include algorithm #include vector//普通函数 void print01(int val) {cout val ; } //函数对象 class print02 {public:void operator()(int val) {cout val ;} };//for_each算法基本用法 void test01() {vectorint v;for (int i 0; i 10; i) {v.push_back(i);}//遍历算法for_each(v.begin(), v.end(), print01);cout endl;for_each(v.begin(), v.end(), print02());cout endl; }int main() {test01();system(pause);return 0; }总结for_each在实际开发中是最常用遍历算法需要熟练掌握 1.2 transform 功能描述 搬运容器到另一个容器中 函数原型 transform(iterator beg1, iterator end1, iterator beg2, _func); //beg1 源容器开始迭代器 //end1 源容器结束迭代器 //beg2 目标容器开始迭代器 //_func 函数或者函数对象 示例 #includevector #includealgorithm//常用遍历算法 搬运 transformclass TransForm { public:int operator()(int val){return val;}};class MyPrint { public:void operator()(int val){cout val ;} };void test01() {vectorintv;for (int i 0; i 10; i){v.push_back(i);}vectorintvTarget; //目标容器vTarget.resize(v.size()); // 目标容器需要提前开辟空间transform(v.begin(), v.end(), vTarget.begin(), TransForm());for_each(vTarget.begin(), vTarget.end(), MyPrint()); }int main() {test01();system(pause);return 0; }总结 搬运的目标容器必须要提前开辟空间否则无法正常搬运 2 常用查找算法 学习目标 掌握常用的查找算法 算法简介 find //查找元素find_if //按条件查找元素adjacent_find //查找相邻重复元素binary_search //二分查找法count //统计元素个数count_if //按条件统计元素个数 2.1 find 功能描述 查找指定元素找到返回指定元素的迭代器找不到返回结束迭代器end() 函数原型 find(iterator beg, iterator end, value); // 按值查找元素找到返回指定位置迭代器找不到返回结束迭代器位置 // beg 开始迭代器 // end 结束迭代器 // value 查找的元素 示例 #include algorithm #include vector #include string void test01() {vectorint v;for (int i 0; i 10; i) {v.push_back(i 1);}//查找容器中是否有 5 这个元素vectorint::iterator it find(v.begin(), v.end(), 5);if (it v.end()) {cout 没有找到! endl;}else {cout 找到: *it endl;} }class Person { public:Person(string name, int age) {this-m_Name name;this-m_Age age;}//重载bool operator(const Person p) {if (this-m_Name p.m_Name this-m_Age p.m_Age) {return true;}return false;}public:string m_Name;int m_Age; };void test02() {vectorPerson v;//创建数据Person p1(aaa, 10);Person p2(bbb, 20);Person p3(ccc, 30);Person p4(ddd, 40);v.push_back(p1);v.push_back(p2);v.push_back(p3);v.push_back(p4);vectorPerson::iterator it find(v.begin(), v.end(), p2);if (it v.end()) {cout 没有找到! endl;}else {cout 找到姓名: it-m_Name 年龄: it-m_Age endl;} }总结 利用find可以在容器中找指定的元素返回值是迭代器 2.2 find_if 功能描述 按条件查找元素 函数原型 find_if(iterator beg, iterator end, _Pred); // 按值查找元素找到返回指定位置迭代器找不到返回结束迭代器位置 // beg 开始迭代器 // end 结束迭代器 // _Pred 函数或者谓词返回bool类型的仿函数 示例 #include algorithm #include vector #include string//内置数据类型 class GreaterFive { public:bool operator()(int val){return val 5;} };void test01() {vectorint v;for (int i 0; i 10; i) {v.push_back(i 1);}vectorint::iterator it find_if(v.begin(), v.end(), GreaterFive());if (it v.end()) {cout 没有找到! endl;}else {cout 找到大于5的数字: *it endl;} }//自定义数据类型 class Person { public:Person(string name, int age){this-m_Name name;this-m_Age age;} public:string m_Name;int m_Age; };class Greater20 { public:bool operator()(Person p){return p.m_Age 20;}};void test02() {vectorPerson v;//创建数据Person p1(aaa, 10);Person p2(bbb, 20);Person p3(ccc, 30);Person p4(ddd, 40);v.push_back(p1);v.push_back(p2);v.push_back(p3);v.push_back(p4);vectorPerson::iterator it find_if(v.begin(), v.end(), Greater20());if (it v.end()){cout 没有找到! endl;}else{cout 找到姓名: it-m_Name 年龄: it-m_Age endl;} }int main() {//test01();test02();system(pause);return 0; }总结find_if按条件查找使查找更加灵活提供的仿函数可以改变不同的策略 2.3 adjacent_find 功能描述 查找相邻重复元素 函数原型 adjacent_find(iterator beg, iterator end); // 查找相邻重复元素,返回相邻元素的第一个位置的迭代器 // beg 开始迭代器 // end 结束迭代器 示例 #include algorithm #include vectorvoid test01() {vectorint v;v.push_back(1);v.push_back(2);v.push_back(5);v.push_back(2);v.push_back(4);v.push_back(4);v.push_back(3);//查找相邻重复元素vectorint::iterator it adjacent_find(v.begin(), v.end());if (it v.end()) {cout 找不到! endl;}else {cout 找到相邻重复元素为: *it endl;} }总结面试题中如果出现查找相邻重复元素记得用STL中的adjacent_find算法 2.4 binary_search 功能描述 查找指定元素是否存在 函数原型 bool binary_search(iterator beg, iterator end, value); // 查找指定的元素查到 返回true 否则false // 注意: 在无序序列中不可用 // beg 开始迭代器 // end 结束迭代器 // value 查找的元素 示例 #include algorithm #include vectorvoid test01() {vectorintv;for (int i 0; i 10; i){v.push_back(i);}//二分查找bool ret binary_search(v.begin(), v.end(),2);if (ret){cout 找到了 endl;}else{cout 未找到 endl;} }int main() {test01();system(pause);return 0; }**总结**二分查找法查找效率很高值得注意的是查找的容器中元素必须的有序序列 2.5 count 功能描述 统计元素个数 函数原型 count(iterator beg, iterator end, value); // 统计元素出现次数 // beg 开始迭代器 // end 结束迭代器 // value 统计的元素 示例 #include algorithm #include vector//内置数据类型 void test01() {vectorint v;v.push_back(1);v.push_back(2);v.push_back(4);v.push_back(5);v.push_back(3);v.push_back(4);v.push_back(4);int num count(v.begin(), v.end(), 4);cout 4的个数为 num endl; }//自定义数据类型 class Person { public:Person(string name, int age){this-m_Name name;this-m_Age age;}bool operator(const Person p){if (this-m_Age p.m_Age){return true;}else{return false;}}string m_Name;int m_Age; };void test02() {vectorPerson v;Person p1(刘备, 35);Person p2(关羽, 35);Person p3(张飞, 35);Person p4(赵云, 30);Person p5(曹操, 25);v.push_back(p1);v.push_back(p2);v.push_back(p3);v.push_back(p4);v.push_back(p5);Person p(诸葛亮,35);int num count(v.begin(), v.end(), p);cout num num endl; } int main() {//test01();test02();system(pause);return 0; }总结 统计自定义数据类型时候需要配合重载 operator 2.6 count_if 功能描述 按条件统计元素个数 函数原型 count_if(iterator beg, iterator end, _Pred); // 按条件统计元素出现次数 // beg 开始迭代器 // end 结束迭代器 // _Pred 谓词 示例 #include algorithm #include vectorclass Greater4 { public:bool operator()(int val){return val 4;} };//内置数据类型 void test01() {vectorint v;v.push_back(1);v.push_back(2);v.push_back(4);v.push_back(5);v.push_back(3);v.push_back(4);v.push_back(4);int num count_if(v.begin(), v.end(), Greater4());cout 大于4的个数为 num endl; }//自定义数据类型 class Person { public:Person(string name, int age){this-m_Name name;this-m_Age age;}string m_Name;int m_Age; };class AgeLess35 { public:bool operator()(const Person p){return p.m_Age 35;} }; void test02() {vectorPerson v;Person p1(刘备, 35);Person p2(关羽, 35);Person p3(张飞, 35);Person p4(赵云, 30);Person p5(曹操, 25);v.push_back(p1);v.push_back(p2);v.push_back(p3);v.push_back(p4);v.push_back(p5);int num count_if(v.begin(), v.end(), AgeLess35());cout 小于35岁的个数 num endl; }int main() {//test01();test02();system(pause);return 0; }**总结**按值统计用count按条件统计用count_if 3 常用排序算法 学习目标 掌握常用的排序算法 算法简介 sort //对容器内元素进行排序random_shuffle //洗牌 指定范围内的元素随机调整次序merge // 容器元素合并并存储到另一容器中reverse // 反转指定范围的元素 3.1 sort 功能描述 对容器内元素进行排序 函数原型 sort(iterator beg, iterator end, _Pred); // 按值查找元素找到返回指定位置迭代器找不到返回结束迭代器位置 // beg 开始迭代器 // end 结束迭代器 // _Pred 谓词 示例 #include algorithm #include vectorvoid myPrint(int val) {cout val ; }void test01() {vectorint v;v.push_back(10);v.push_back(30);v.push_back(50);v.push_back(20);v.push_back(40);//sort默认从小到大排序sort(v.begin(), v.end());for_each(v.begin(), v.end(), myPrint);cout endl;//从大到小排序sort(v.begin(), v.end(), greaterint());for_each(v.begin(), v.end(), myPrint);cout endl; }int main() {test01();system(pause);return 0; }**总结**sort属于开发中最常用的算法之一需熟练掌握 3.2 random_shuffle 功能描述 洗牌 指定范围内的元素随机调整次序 函数原型 random_shuffle(iterator beg, iterator end); // 指定范围内的元素随机调整次序 // beg 开始迭代器 // end 结束迭代器 示例 #include algorithm #include vector #include ctimeclass myPrint { public:void operator()(int val){cout val ;} };void test01() {srand((unsigned int)time(NULL));vectorint v;for(int i 0 ; i 10;i){v.push_back(i);}for_each(v.begin(), v.end(), myPrint());cout endl;//打乱顺序random_shuffle(v.begin(), v.end());for_each(v.begin(), v.end(), myPrint());cout endl; }int main() {test01();system(pause);return 0; }总结random_shuffle洗牌算法比较实用使用时记得加随机数种子 3.3 merge 功能描述 两个容器元素合并并存储到另一容器中 函数原型 merge(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest); // 容器元素合并并存储到另一容器中 // 注意: 两个容器必须是有序的 // beg1 容器1开始迭代器 // end1 容器1结束迭代器 // beg2 容器2开始迭代器 // end2 容器2结束迭代器 // dest 目标容器开始迭代器 示例 #include algorithm #include vectorclass myPrint { public:void operator()(int val){cout val ;} };void test01() {vectorint v1;vectorint v2;for (int i 0; i 10 ; i) {v1.push_back(i);v2.push_back(i 1);}vectorint vtarget;//目标容器需要提前开辟空间vtarget.resize(v1.size() v2.size());//合并 需要两个有序序列merge(v1.begin(), v1.end(), v2.begin(), v2.end(), vtarget.begin());for_each(vtarget.begin(), vtarget.end(), myPrint());cout endl; }int main() {test01();system(pause);return 0; }总结merge合并的两个容器必须的有序序列 3.4 reverse 功能描述 将容器内元素进行反转 函数原型 reverse(iterator beg, iterator end); // 反转指定范围的元素 // beg 开始迭代器 // end 结束迭代器 示例 #include algorithm #include vectorclass myPrint { public:void operator()(int val){cout val ;} };void test01() {vectorint v;v.push_back(10);v.push_back(30);v.push_back(50);v.push_back(20);v.push_back(40);cout 反转前 endl;for_each(v.begin(), v.end(), myPrint());cout endl;cout 反转后 endl;reverse(v.begin(), v.end());for_each(v.begin(), v.end(), myPrint());cout endl; }int main() {test01();system(pause);return 0; }**总结**reverse反转区间内元素面试题可能涉及到 4 常用拷贝和替换算法 学习目标 掌握常用的拷贝和替换算法 算法简介 copy // 容器内指定范围的元素拷贝到另一容器中replace // 将容器内指定范围的旧元素修改为新元素replace_if // 容器内指定范围满足条件的元素替换为新元素swap // 互换两个容器的元素 4.1 copy 功能描述 容器内指定范围的元素拷贝到另一容器中 函数原型 copy(iterator beg, iterator end, iterator dest); // 按值查找元素找到返回指定位置迭代器找不到返回结束迭代器位置 // beg 开始迭代器 // end 结束迭代器 // dest 目标起始迭代器 示例 #include algorithm #include vectorclass myPrint { public:void operator()(int val){cout val ;} };void test01() {vectorint v1;for (int i 0; i 10; i) {v1.push_back(i 1);}vectorint v2;v2.resize(v1.size());copy(v1.begin(), v1.end(), v2.begin());for_each(v2.begin(), v2.end(), myPrint());cout endl; }int main() {test01();system(pause);return 0; }总结利用copy算法在拷贝时目标容器记得提前开辟空间 4.2 replace 功能描述 将容器内指定范围的旧元素修改为新元素 函数原型 replace(iterator beg, iterator end, oldvalue, newvalue); // 将区间内旧元素 替换成 新元素 // beg 开始迭代器 // end 结束迭代器 // oldvalue 旧元素 // newvalue 新元素 示例 #include algorithm #include vectorclass myPrint { public:void operator()(int val){cout val ;} };void test01() {vectorint v;v.push_back(20);v.push_back(30);v.push_back(20);v.push_back(40);v.push_back(50);v.push_back(10);v.push_back(20);cout 替换前 endl;for_each(v.begin(), v.end(), myPrint());cout endl;//将容器中的20 替换成 2000cout 替换后 endl;replace(v.begin(), v.end(), 20,2000);for_each(v.begin(), v.end(), myPrint());cout endl; }int main() {test01();system(pause);return 0; }总结replace会替换区间内满足条件的元素 4.3 replace_if 功能描述: 将区间内满足条件的元素替换成指定元素 函数原型 replace_if(iterator beg, iterator end, _pred, newvalue); // 按条件替换元素满足条件的替换成指定元素 // beg 开始迭代器 // end 结束迭代器 // _pred 谓词 // newvalue 替换的新元素 示例 #include algorithm #include vectorclass myPrint { public:void operator()(int val){cout val ;} };class ReplaceGreater30 { public:bool operator()(int val){return val 30;}};void test01() {vectorint v;v.push_back(20);v.push_back(30);v.push_back(20);v.push_back(40);v.push_back(50);v.push_back(10);v.push_back(20);cout 替换前 endl;for_each(v.begin(), v.end(), myPrint());cout endl;//将容器中大于等于的30 替换成 3000cout 替换后 endl;replace_if(v.begin(), v.end(), ReplaceGreater30(), 3000);for_each(v.begin(), v.end(), myPrint());cout endl; }int main() {test01();system(pause);return 0; }总结replace_if按条件查找可以利用仿函数灵活筛选满足的条件 4.4 swap 功能描述 互换两个容器的元素 函数原型 swap(container c1, container c2); // 互换两个容器的元素 // c1容器1 // c2容器2 示例 #include algorithm #include vectorclass myPrint { public:void operator()(int val){cout val ;} };void test01() {vectorint v1;vectorint v2;for (int i 0; i 10; i) {v1.push_back(i);v2.push_back(i100);}cout 交换前 endl;for_each(v1.begin(), v1.end(), myPrint());cout endl;for_each(v2.begin(), v2.end(), myPrint());cout endl;cout 交换后 endl;swap(v1, v2);for_each(v1.begin(), v1.end(), myPrint());cout endl;for_each(v2.begin(), v2.end(), myPrint());cout endl; }int main() {test01();system(pause);return 0; }总结swap交换容器时注意交换的容器要同种类型 5 常用算术生成算法 学习目标 掌握常用的算术生成算法 注意 算术生成算法属于小型算法使用时包含的头文件为 #include numeric 算法简介 accumulate // 计算容器元素累计总和 fill // 向容器中添加元素 5.1 accumulate 功能描述 计算区间内 容器元素累计总和 函数原型 accumulate(iterator beg, iterator end, value); // 计算容器元素累计总和 // beg 开始迭代器 // end 结束迭代器 // value 起始值 示例 #include numeric #include vector void test01() {vectorint v;for (int i 0; i 100; i) {v.push_back(i);}int total accumulate(v.begin(), v.end(), 0);cout total total endl; }int main() {test01();system(pause);return 0; }总结accumulate使用时头文件注意是 numeric这个算法很实用 5.2 fill 功能描述 向容器中填充指定的元素 函数原型 fill(iterator beg, iterator end, value); // 向容器中填充元素 // beg 开始迭代器 // end 结束迭代器 // value 填充的值 示例 #include numeric #include vector #include algorithmclass myPrint { public:void operator()(int val){cout val ;} };void test01() {vectorint v;v.resize(10);//填充fill(v.begin(), v.end(), 100);for_each(v.begin(), v.end(), myPrint());cout endl; }int main() {test01();system(pause);return 0; }总结利用fill可以将容器区间内元素填充为 指定的值 6 常用集合算法 学习目标 掌握常用的集合算法 算法简介 set_intersection // 求两个容器的交集 set_union // 求两个容器的并集 set_difference // 求两个容器的差集 6.1 set_intersection 功能描述 求两个容器的交集 函数原型 set_intersection(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest); // 求两个集合的交集 // 注意:两个集合必须是有序序列 // beg1 容器1开始迭代器 // end1 容器1结束迭代器 // beg2 容器2开始迭代器 // end2 容器2结束迭代器 // dest 目标容器开始迭代器 示例 #include vector #include algorithmclass myPrint { public:void operator()(int val){cout val ;} };void test01() {vectorint v1;vectorint v2;for (int i 0; i 10; i){v1.push_back(i);v2.push_back(i5);}vectorint vTarget;//取两个里面较小的值给目标容器开辟空间vTarget.resize(min(v1.size(), v2.size()));//返回目标容器的最后一个元素的迭代器地址vectorint::iterator itEnd set_intersection(v1.begin(), v1.end(), v2.begin(), v2.end(), vTarget.begin());for_each(vTarget.begin(), itEnd, myPrint());cout endl; }int main() {test01();system(pause);return 0; }总结 求交集的两个集合必须的有序序列目标容器开辟空间需要从两个容器中取小值set_intersection返回值既是交集中最后一个元素的位置 6.2 set_union 功能描述 求两个集合的并集 函数原型 set_union(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest); // 求两个集合的并集 // 注意:两个集合必须是有序序列 // beg1 容器1开始迭代器 // end1 容器1结束迭代器 // beg2 容器2开始迭代器 // end2 容器2结束迭代器 // dest 目标容器开始迭代器 示例 #include vector #include algorithmclass myPrint { public:void operator()(int val){cout val ;} };void test01() {vectorint v1;vectorint v2;for (int i 0; i 10; i) {v1.push_back(i);v2.push_back(i5);}vectorint vTarget;//取两个容器的和给目标容器开辟空间vTarget.resize(v1.size() v2.size());//返回目标容器的最后一个元素的迭代器地址vectorint::iterator itEnd set_union(v1.begin(), v1.end(), v2.begin(), v2.end(), vTarget.begin());for_each(vTarget.begin(), itEnd, myPrint());cout endl; }int main() {test01();system(pause);return 0; }总结 求并集的两个集合必须的有序序列目标容器开辟空间需要两个容器相加set_union返回值既是并集中最后一个元素的位置 6.3 set_difference 功能描述 求两个集合的差集 函数原型 set_difference(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest); // 求两个集合的差集 // 注意:两个集合必须是有序序列 // beg1 容器1开始迭代器 // end1 容器1结束迭代器 // beg2 容器2开始迭代器 // end2 容器2结束迭代器 // dest 目标容器开始迭代器 示例 #include vector #include algorithmclass myPrint { public:void operator()(int val){cout val ;} };void test01() {vectorint v1;vectorint v2;for (int i 0; i 10; i) {v1.push_back(i);v2.push_back(i5);}vectorint vTarget;//取两个里面较大的值给目标容器开辟空间vTarget.resize( max(v1.size() , v2.size()));//返回目标容器的最后一个元素的迭代器地址cout v1与v2的差集为 endl;vectorint::iterator itEnd set_difference(v1.begin(), v1.end(), v2.begin(), v2.end(), vTarget.begin());for_each(vTarget.begin(), itEnd, myPrint());cout endl;cout v2与v1的差集为 endl;itEnd set_difference(v2.begin(), v2.end(), v1.begin(), v1.end(), vTarget.begin());for_each(vTarget.begin(), itEnd, myPrint());cout endl; }int main() {test01();system(pause);return 0; }总结 求差集的两个集合必须的有序序列目标容器开辟空间需要从两个容器取较大值set_difference返回值既是差集中最后一个元素的位置
http://www.hkea.cn/news/14491274/

相关文章:

  • 国内专业网站设计可信网站验证服务中心
  • wordpress承载的数据在线网站优化
  • 网站负责人核验照企业融资的三个渠道
  • 公司部门网站设计模板下载业务网站在线生成
  • 电子产品展示网站模板洛阳市政建设网站
  • ajax jsp网站开发从入门到精通晋江论坛怎么发图
  • 文创网站建设沧州青县网站建设
  • 网站效果图制作公网ip购买
  • 新开传奇网站刚开一秒第一区网站建设公司深圳
  • 上海金桥建设监理有限公司网站官方网站minecraft
  • 网站模板下载 网盘路飞 wordpress
  • 投资网站排行天体摄影
  • 怎么查网站是哪个建站公司做的免费公司网站建站
  • 做画册的网站百度搜索量排名
  • 企业网站策划建设方案百度注册网站不需要手机验证的
  • 手机网站建设最新报价一家电子商务网站建设心得
  • 网站主要内容各地微信推广平台大全
  • 网站建设深易站网站建设
  • 金华企业做网站做网站的一般要多钱
  • 用servlet做外卖网站qq在线登录手机版
  • 做几个小网站还是做一个大网站wordpress代理管理多站点
  • 金湖县网站建设wordpress 语法编辑器
  • 贵州中小型营销型网站建设公司做家乡网站代码
  • 建设网站有什么法律么网络广告营销的案例
  • 购物网站开发需求文档七牛云wordpress+代码
  • 中国建设培训网站查询系统江苏省建设工程管理局网站
  • 域名备案时网站名称兴安盟seo
  • 建设网站必须要服务器吗甘肃路桥建设集团公司网站
  • 网站设计要求有哪些音乐网站开发代码
  • php网站识别手机许昌永诚网络科技有限公司