c++泛型算法使用及分类

//泛型算法本身不会执行容器的操作,它们只会运行于迭代器之上,执行迭代器的操作

//算法永远不会改变底层容器的大小。

cout << "==================只读算法================" << endl;

vector<int> vec{ 9,8,7,6,5,4,3,2,1,0 };

auto ip = find(vec.begin(), vec.end(), 4);//find 返回指向元素的迭代器

cout << *ip << endl;

 

auto num = count(vec.begin(), vec.end(), 6);//返回数量

cout << "num = " << num << endl;

 

auto sum = accumulate(vec.begin(), vec.end(), 0);//对容器内元素求和,第三个参数为和的初始值,只有定义+运算符的类型可以使用,char不能使用

cout << "sum = " << sum << endl;

 

vector<int> vec2{ 9,8,7,6,5,4,3 };

auto issam = equal(vec2.begin(), vec2.end(), vec.begin());//判断两个序列是否保存相同的值,后边容器的元素数量最少要等于前边的元素数量

cout << "issam = " << issam << endl;//输出。 如果所有对应的元素都相等返回true 否则返回false,对应下标的相等就可以

 

cout << "=======================写容器算法==============" << endl;

vector<int> vec3{1,2,3,4,5,6,7,8,9};

fill(vec3.begin(), vec3.end(), 7);//讲指定范围内的元素赋值,第三个参数为要赋的值

show(vec3);

 

fill_n(vec3.begin()+1, 5, 8);//在指定开始的位置,对容器赋n个值,第二个参数为个数,第三个参数为要赋的值

show(vec3);

 

int a1[]{ 1,2,3,4,5,6,7,8,9,0 };

int a2[sizeof(a1) / sizeof(*a1)];

auto ret = copy(begin(a1), end(a1), a2);//拷贝算。返回a2的尾后迭代器

 

replace(vec3.begin(), vec3.end(), 8, 6);//将容器中指定的值改成另一个值

show(vec3);

 

vector<int> vec4;

replace_copy(vec3.begin(), vec3.end(), back_inserter(vec4), 6, 9);//保持vec3中的元素不变,将元素拷贝到vec4,并替换指定的值

show(vec3);

show(vec4);

 

cout << "=======================重排容器元素==============" << endl;

vector<int> vec5{ 3,6,8,5,8,2,7,8,8,1,9 };//升序排序容器内元素

sort(vec5.begin(), vec5.end());

show(vec5);

 

auto iep = unique(vec5.begin(), vec5.end());//将重复的元素放到最后,只有相邻的才有效,返回最后一个不重复的迭代器

show(vec5);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值