欧美巨乳,上饶天气预报,手机软件

admin 4个月前 ( 03-12 15:45 ) 0条评论
摘要: 算法算法是STL的中枢,STL提供了算法库。迭代器主要负责从容器中获取一个对象,算法与具体对象在容器中的什么位置等细节无关。...

算法(Algorithm)

算法是STL的中枢,STL提供了算法库。其算法库实质即模板函数

迭代器主要负责从容器中获取一个对象,算法与具体对象在容器中的什shoejob么位置等细节无关。

标准算法4大类别

1.非修正序列算法

2.修正序列算法

3.排序算法

4.数值算法

非修正序列算法

非修正序列算法不修改他们所作用的容器。

STL中提供的非修正序列算法的操作函数

  1. adjacent_find(first,last) :搜索相邻的重复元徐志贺素
  2. count(first,last,val) 计数
  3. equal(first,last ,first2) 判断是否相等
  4. find(fir静香本子st,last,val) 搜索
  5. for_each(first,last ,func) 对first到last范围内的各个元素执行函数func定义操作
  6. mismatch(first,last,first2) 找出不吻合点
  7. search(first,last ,firsr2,last2) 搜索某个子序列

非修正序列算法实例应用

解决问题:搜索相邻的重复元素并实现计数。

//非修正序列算法应用实例: 函数adjacent_fi赵布和nd()、count()、for_each()
#include
#include
#include
using n诺亚舟np7000amespace std;
void Output(int val)
{
cout << val << ' ';
}
void main()
{
multiset > IS;
IS.insert(5);
IS.insert(2);
IS.insert(9);
IS.insert(5);
IS.insert(529);
IS.insert(2);
cout << "set:" << endl;
multiset >:cliphunter:iterator it = IS.begin莉亚迪桑38分35截图();
for (it = IS.begin(); it != IS.end(); it++)
{
cout << *it << endl;
}
cout << "adjacent_find算法输出重复元素:" << endl;
cout << "第一次匹配: ";
it = adjacent_find(IS.begin(), IS.end());
cout << *it++ << ' ';
cout << *it << endl;
cout << "第二次匹配: ";
it = adjacent_find(it, IS.end());
cout << *it++ << ' ';
cout << *it << endl;
cout << "count算法输出相同元素个数:"<
int cnt = count(IS.begin(), IS.end(), 6);
cout << "相同元素数量:" << cnt << endl;
cout << "for_each算法输出容器内元素:";
for_each(IS.begin(), IS.end(), Output);
cout << endl;
system("pause");
}

结果为:

修正序列算法

修正序列算法的有些操作会改变容器的内容。例把一个容器的部分内容复制到同一个容器的另一部分,或用指定值填充容器。

修正序列算法提供的函数模板

  1. copy(first,last,first2) ;复制
  2. copy_backward(first,last,first2) 逆向复狂武霸帝制
  3. fill(f欧美巨乳,上饶天气预报,手机软件irst,last,val) 改填元素值
  4. partition(first,last.pred) 切割
  5. random_shuffle(first,last) 随机重排
  6. remove(fir美萃尚品st,last,val)移除某种元素,但不删除
  7. swap(it1,it2) 置换
  8. unique(first,last) 将重复的元素折叠锁边,变成唯一的。

修正序列算法应用实例

问题描述:应用fill算法对容器元素值赋值,并用random_shuffle算法将元素顺序随机打乱。

//修正序列算法-fill()、random_shuttle()、rotate()
#include
#include
#include
using namespace std;
void Output(int val)
{
cout << val << ' ';
}
void main()
{
vector IV;
for (int i = 0; i < 10; i++)
IV.push_back(i); //插入元素值
cout << "Vector-all:";
for_each(IV.begin(), IV.end(), Output);
fill(IV.begin(),IV.end()-5,0); //对容器元素赋值,注意指针不能超过IV.end()
cout << endl;
cout << "Vector-fill:";
for_each(IV.begin(), IV.e合肥丝足会所nd(), O男男肉utput);
cout << endl;
for_each(IV.begin(),IV.end(),Output);
random_德米亚尼shuffle(IV.begin(),IV.end());//将元素顺序随机打乱
cout << endl;
cout << "Vector-random:";
for_each(IV.begin(),IV.end(),Output);
cout << endl;
rotate(IV.begin(), IV.en十头金毛吼d()-2, IV.end());
cout << "Vector-rotate:";
for_each(IV.begin(), IV.end(), Output);
cout << endl;
syste茅于轼事件始末m("pause");
}

结果为:

排序算法

排序算法的特点是对容器的内容进行不同形式的排序,例如sort算法。

排序算法函数模板

  1. binary_search(first,last,val) 二元搜索
  2. equal_range(first,last,val) 判断是否相等,并返回一个区间
  3. includes(first,last,first2,last2) 包含于
  4. lexicographical_compare(first,last,first2,last2) 以字典排列方式比较
  5. lower_bound(first,last,val) 下限
  6. make_heap(first,last) 制造一个heap
  7. next_permutation(first,last) 获得下一个排列组合
  8. set_intersection(first,last,first2,last2,result) 交集
  9. set_symmetric_difference(first,last,first2,last2,result) 差集
  10. set_union(first,last,first2,last2,result) 联集
  11. sort(first,last) 排序

排序算法应用实例

问题叁生密境描述:应用sort排序

//排序算法:sort()
#include
#boycotinclude
#include
using namespace std;
void Output(int val)
{
cout << val << ' ';
}
void main()
{
vectorCV;
CV.push_back('J');
高冈大佛CV.push_back('Y');
CV.push_back('F');
CV.push_back('H');
CV.push_back('Y');
CV.push_back('N');
cout << "Vector-all:";
for_each(CV.begin(),CV.end(),Output);
sort(CV.begin(),CV.end());
cout << endl;
cout << "Vector-sort:";
for_each(CV.begin(), CV.end(), Output);
cout << endl;
system("pause");
}

结果为:

数值算法

数值算法是对容器的内容进行数值计算。应用其函数时,需添加头文件:#include

数值算法的函数模板

  1. accumulate(first,last,init) 元素累加
  2. inner_product(first,last,first2,init)内积
  3. partial_sum(first,last,result) 局部总和
  4. adjacent_difference(first,last,result) 相邻元素的差额

数值算法的应用实例

问题描述:应用accumulate算法

//数值算法:函数accumulat肉色兵团e()
#include
#include
#include
#include
using namespace std;
void Output(int val)
{
cout << val << ' ';
}
void main()
{
vector IV;
for (int i = 0; i < 10; i++)
IV.push_back(i);
cout << "Vector-all:";
std::for_each(IV.begin(), IV.end(), Output);
int result = accumulate(IV.begin(), IV.end(), 5);
cout << endl;
cout << "Accumulate-result:" << result << endl;
sy龙星妤stem("pause");
}

结果为:

本文部分内容参考至教材,如有错误,敬请指正,如有侵权,请联系修改,欢迎加入讨论,谢谢!

文章版权及转载声明:

作者:admin本文地址:http://www.mikebucks.com/articles/202.html发布于 4个月前 ( 03-12 15:45 )
文章转载或复制请以超链接形式并注明出处牛奶咖啡,意大利咖啡精选,牛奶和咖啡最佳搭配的100种方法