STL C++ Primer算法总结(一)
来源:互联网 发布:淘宝天猫优惠券群骗局 编辑:程序博客网 时间:2024/05/18 02:56
//STL C++ Primer 算法总结(一)
#include<iostream>
#include<vector>
#include<algorithm>//count()
#include<list>
#include<string>
#include<numeric>//accumulate()
#include<iterator>
{
vector<int> a = { 1,2,3,4,5,6,7,8,9,10 };
//find(begin,end,value)//返回第一个value的迭代器,没有返回end
auto result = find(a.begin(), a.end(), 3);
result != a.end() ? cout << "I have found" : cout << "Not found";
//count(begin,end,value)//返回value出现的次数
cout << count(a.begin(), a.end(), 3) << endl;
//accumulate(begin,end,init-value)//返回[begin,end)value和init-value的和
cout << accumulate(a.begin(), a.end(), 5) << endl;//60
//fill(begin,end,value)//将[begin,end)元素重置或填充为value
fill(a.begin(), a.end(), 0);
//fill_n(dest,n,value)向[dest,dest+n)填充或重置为value
fill_n(a.begin(), 3, 5);
//copy(begin_1,end_1,begin_2);将[begin_1,end_1)里的value向[begin_2,end_1-begin_1-1)拷贝
int b[10];
copy(a.begin(), a.end(), b);
for (auto &v : b)
cout << v << ends;
cout << endl;
//replace(begin,end,oldvalue,newvalue)将[begin,end]里oldvalue替换为newvalue
replace(a.begin(), a.end(), 0, 5);
for (auto &v : a)
cout << v << ends;
cout << endl;
/*replace_copy(begin,end,dummy,oldvalue,newvalue)与replace不同的是此算法不会
改变[begin,end)里的值,而是在副本dummy里改动*/
vector<int> dummy;
replace_copy(a.begin(), a.end(), back_inserter(dummy), 5, 0);
for (auto &v : a)
cout << v << ends;
cout << endl;
for (auto &v : dummy)
cout << v << ends;
cout << endl;
/*unique(begin,end)//重排[begin,end)里的value使重复value排在后面并返回
第一个重复value的迭代器
注意: 使用前请确保序列有序主要是使重复value紧邻*/
vector<string> c = { "WH","wh","Marco","marco","wh" };
sort(c.begin(), c.end());
auto frist_repeat = unique(c.begin(), c.end());
c.erase(frist_repeat, c.end());//删除重复value
for (auto &v : c)
return 0;
}
#include<iostream>
#include<vector>
#include<algorithm>//count()
#include<list>
#include<string>
#include<numeric>//accumulate()
#include<iterator>
using namespace std;
bool divide(const string &a)
{
return a.size() > 2;
}
{
vector<int> a = { 1,2,3,4,5,6,7,8,9,10 };
//find(begin,end,value)//返回第一个value的迭代器,没有返回end
auto result = find(a.begin(), a.end(), 3);
result != a.end() ? cout << "I have found" : cout << "Not found";
//count(begin,end,value)//返回value出现的次数
cout << count(a.begin(), a.end(), 3) << endl;
//accumulate(begin,end,init-value)//返回[begin,end)value和init-value的和
cout << accumulate(a.begin(), a.end(), 5) << endl;//60
//fill(begin,end,value)//将[begin,end)元素重置或填充为value
fill(a.begin(), a.end(), 0);
//fill_n(dest,n,value)向[dest,dest+n)填充或重置为value
fill_n(a.begin(), 3, 5);
//copy(begin_1,end_1,begin_2);将[begin_1,end_1)里的value向[begin_2,end_1-begin_1-1)拷贝
int b[10];
copy(a.begin(), a.end(), b);
for (auto &v : b)
cout << v << ends;
cout << endl;
//replace(begin,end,oldvalue,newvalue)将[begin,end]里oldvalue替换为newvalue
replace(a.begin(), a.end(), 0, 5);
for (auto &v : a)
cout << v << ends;
cout << endl;
/*replace_copy(begin,end,dummy,oldvalue,newvalue)与replace不同的是此算法不会
改变[begin,end)里的值,而是在副本dummy里改动*/
vector<int> dummy;
replace_copy(a.begin(), a.end(), back_inserter(dummy), 5, 0);
for (auto &v : a)
cout << v << ends;
cout << endl;
for (auto &v : dummy)
cout << v << ends;
cout << endl;
/*unique(begin,end)//重排[begin,end)里的value使重复value排在后面并返回
第一个重复value的迭代器
注意: 使用前请确保序列有序主要是使重复value紧邻*/
vector<string> c = { "WH","wh","Marco","marco","wh" };
sort(c.begin(), c.end());
auto frist_repeat = unique(c.begin(), c.end());
c.erase(frist_repeat, c.end());//删除重复value
for (auto &v : c)
cout << v << ends;
/*partition(begin,end,pred)接受一个谓词,以谓词是否为真将容器[begin,end)
划分前半段为真,后半段为假,返回第一个为假的迭代器*/
vector<string> s = { "wh","marco","marco","Marco","R","W" ,"A","B","Boy","boy"};
auto div = partition(s.begin(), s.end(), divide);
for (auto it = s.begin(); it != div; ++it)
cout << *it << ends;
cout << endl;
for (auto it = div; it != s.end(); ++it)
cout << *it << ends;
return 0;
}
1 0
- STL C++ Primer算法总结(一)
- C primer plus 基础总结(一)
- C PRIMER PLUS总结(一)
- C PRIMER PLUS(第五版)疑问总结一
- STL的学习(C++primer)
- C++ Primer总结(一)
- C++Primer读书笔记(一)
- C++Primer观后感(一)
- C++primer读书笔记(一)
- c++primer 笔记(一)
- C Primer Plus(一)
- C++primer学习心得(一)
- C++Primer 笔记(一)
- C++primer知识点(一)
- 关于C++STL模板库的一些总结(一)
- stl变易算法(一)
- STL 容器总结(一)
- C++STL容器(一)
- 以太网帧间隙
- Kaka's Matrix poj3422 费用流
- hibernate中cascade属性的作用
- 北大 C++ 8.5 函数对象
- Leetcode Algorithm 207. Course Schedule
- STL C++ Primer算法总结(一)
- java 多线程技术基础
- [BZOJ3307][雨天的尾巴][树链剖分+线段树]
- PHP获取访问者IP
- Java层到Native层Binder的流程
- 网易18实习生网测题--吃豆子
- ScrollView嵌套TextView文字上部截断下部有空隙
- 使用moy快速开发后台管理系统(四)
- BSI TR-03110