-
next_permutation:下一个排序序列的组合
-
#include<iostream> #include<algorithm> #include<vector> using namespace std; int main() { vector<int> v = { 1,3,6,8,6,6,2,0,9,0 }; next_permutation(v.begin(), v.end());//下一个排序序列的组合 for (auto v : v)cout<<v; }
-
prev_permutation:上一个排序序列的组合
-
#include<iostream> #include<algorithm> #include<vector> using namespace std; int main() { vector<int> v = { 1,3,6,8,6,6,2,0,9,0 }; prev_permutation(v.begin(), v.end());//上一个排序序列的组合 for (auto v : v)cout<<v; }
-
accumulate:区间求和
-
#include<iostream> #include<algorithm> #include<numeric> #include<vector> using namespace std; int main() { vector<int> v = { 1,3,6,8,6,6,2,0,9,0 }; cout << accumulate(v.begin(), v.end(), 0); //for (auto v : v)cout<<v; }
-
partial_sum:相邻元素的和
-
#include<iostream> #include<algorithm> #include<numeric> #include<vector> using namespace std; int main() { vector<int> v = { 1,3,6,8,6,6,2,0,9,0 }; vector<int> v1(v.size()); partial_sum(v.begin(), v.end(), v1.begin());//相邻元素的和 //for (auto v : v)cout<<v; }
-
inner_product:序列内积运算
-
#include<iostream> #include<algorithm> #include<numeric> #include<vector> using namespace std; int main() { vector<int> v = { 1,3,6,8,6,6,2,0,9,0 }; vector<int> v1 = { 1,3,6,8,6,6,2,0,9,0 }; cout << inner_product(v.begin(), v.end(), v1.begin(), 0) << endl;//序列内积运算 //for (auto v : v)cout<<v; }
-
adjacent_difference:相邻元素的差
-
#include<iostream> #include<algorithm> #include<numeric> #include<vector> #include<iterator> using namespace std; int main() { vector<int> v = { 1,3,6,8,6,6,2,0,9,0 }; vector<int> v1 = { 1,3,6,8,6,6,2,0,9,0 }; adjacent_difference(v.begin(), v.end(), ostream_iterator<int>(cout, " "));//相邻元素的差 //for (auto v : v)cout<<v; }
-
for_each:迭代访问
-
#include<iostream> #include<algorithm> #include<numeric> #include<vector> #include<iterator> using namespace std; int main() { vector<int> v = { 1,3,6,8,6,6,2,0,9,0 }; vector<int> v1 = { 1,3,6,8,6,6,2,0,9,0 }; for_each(v.begin(), v.end(), [](int x) {cout << x; });//迭代访问 }
-
fill:填充方式初始容器
-
#include<iostream> #include<algorithm> #include<numeric> #include<vector> #include<iterator> using namespace std; int main() { vector<int> v = { 1,3,6,8,6,6,2,0,9,0 }; vector<int> v1(5); fill(v1.begin(), v1.end(), 4);//填充方式初始容器 for_each(v1.begin(), v1.end(), [](int a) {cout << a << " "; }); }
-
fill_n:指定长度填充容器
-
#include<iostream> #include<algorithm> #include<numeric> #include<vector> #include<iterator> using namespace std; int main() { vector<int> v = { 1,3,6,8,6,6,2,0,9,0 }; vector<int> v1(5); fill_n(v1.begin(),5, 4);//填充方式初始容器 for_each(v1.begin(), v1.end(), [](int a) {cout << a << " "; }); }
-
generate_n:填充前n个位置
-
#include<iostream> #include<algorithm> #include<numeric> #include<vector> #include<iterator> using namespace std; int main() { vector<int> v = { 1,3,6,8,6,6,2,0,9,0 }; vector<int> v1(5); generate(v1.begin(), v1.end(), []() {return 50; });//填充前n个位置 for_each(v1.begin(), v1.end(), [](int a) {cout << a << " "; }); }
#include<iostream> #include<algorithm> #include<numeric> #include<vector> #include<iterator> using namespace std; int main() { vector<int> v = { 1,3,6,8,6,6,2,0,9,0 }; vector<int> v1(5); generate_n(v1.begin(), 2, []() {return 50; });//填充前n个位置 for_each(v1.begin(), v1.end(), [](int a) {cout << a << " "; }); }
-
transform:一元转换和二元转换
-
#include<iostream> #include<algorithm> #include<numeric> #include<vector> #include<iterator> using namespace std; int main() { vector<int> v = { 1,3,6,8,6,6,2,0,9,0 }; vector<int> v1(15); transform(v.begin(), v.end(), v1.begin(), [](int a) {return -a; });//一元转换和二元转换 for_each(v1.begin(), v1.end(), [](int a) {cout << a << " "; }); }
-
equal:两容器元素是否都相同
-
#include<iostream> #include<algorithm> #include<numeric> #include<vector> #include<iterator> using namespace std; int main() { vector<int> v = { 1,3,6,8,6,6,2,0,9,0 }; vector<int> v1 = { 1,3,6,8,6,6,2,0,9,0 }; cout<<equal(v1.begin(), v1.end(), v.begin());//两容器元素是否都相同 //for_each(v1.begin(), v1.end(), [](int a) {cout << a << " "; }); }
-
includes:是否是包含关系
-
clude<iostream> #include<algorithm> #include<numeric> #include<vector> #include<iterator> using namespace std; int main() { vector<int> v = { 1,2,3 }; vector<int> v1 = { 1,2}; cout<<includes(v.begin(), v.end(), v1.begin(),v1.end());//两容器元素是包含关系(必须都是有序) //for_each(v1.begin(), v1.end(), [](int a) {cout << a << " "; }); }
-
lexicographical_compare:比较两个序列
-
#include<iostream> #include<algorithm> #include<numeric> #include<vector> #include<iterator> using namespace std; int main() { vector<int> v = { 1,2,3 }; vector<int> v1 = { 1,2}; cout<<lexicographical_compare(v.begin(), v.end(), v1.begin(), v1.end());//比较两个序列 //for_each(v1.begin(), v1.end(), [](int a) {cout << a << " "; }); }
-
max:求最大值
-
#include<iostream> #include<algorithm> #include<numeric> #include<vector> #include<iterator> using namespace std; int main() { vector<int> v = { 1,2,3 }; vector<int> v1 = { 1,2}; cout << max(1, 3);//求最大值 //for_each(v1.begin(), v1.end(), [](int a) {cout << a << " "; }); }
-
max_element:返回最大值的iterator
-
#include<iostream> #include<algorithm> #include<numeric> #include<vector> #include<iterator> using namespace std; int main() { vector<int> v = { 1,2,3 }; vector<int> v1 = { 1,2}; cout << *max_element(v.begin(), v.end());//返回最大值的iterator //for_each(v1.begin(), v1.end(), [](int a) {cout << a << " "; }); }
-
min:求最小值
-
#include<iostream> #include<algorithm> #include<numeric> #include<vector> #include<iterator> using namespace std; int main() { vector<int> v = { 1,2,3 }; vector<int> v1 = { 1,2}; cout << min(1, 3);//求最小值 //for_each(v1.begin(), v1.end(), [](int a) {cout << a << " "; }); }
-
min_element:求最小值的iterator
-
#include<iostream> #include<algorithm> #include<numeric> #include<vector> #include<iterator> using namespace std; int main() { vector<int> v = { 1,3,6,8,6,6,2,0,9,0 }; vector<int> v1 = { 1,2}; cout << *min_element(v.begin(), v.end());//返回最大值的iterator //for_each(v1.begin(), v1.end(), [](int a) {cout << a << " "; }); }
-
mismatch:找到第一个不同的位置
-
#include<iostream> #include<algorithm> #include<numeric> #include<vector> #include<iterator> using namespace std; int main() { vector<int> v = { 1,3,6,8,6,6,2,0,9,0 }; vector<int> v1 = { 1,7}; cout<<*mismatch(v.begin(), v.end(), v1.begin(), v1.end()).first<<" "<< *mismatch(v.begin(), v.end(), v1.begin(), v1.end()).second<<endl;//找到第一个不同的位置 //for_each(v1.begin(), v1.end(), [](int a) {cout << a << " "; }); }
-
set_union:差集
-
#include<iostream> #include<algorithm> #include<numeric> #include<vector> #include<iterator> using namespace std; int main() { vector<int> v = { 1,2,3,4,5,6 }; vector<int> v1 = { 4,5,6,7,8,9}; vector<int> v3(v.size() + v1.size()); set_union(v.begin(), v.end(), v1.begin(), v1.end(), v3.begin()); for_each(v3.begin(), v3.end(), [](int a) {if(a!=0)cout << a << " "; }); }
-
set_intersection:并集
-
#include<iostream> #include<algorithm> #include<numeric> #include<vector> #include<iterator> using namespace std; int main() { vector<int> v = { 1,2,3,4,5,6 }; vector<int> v1 = { 4,5,6,7,8,9}; vector<int> v3(v.size() + v1.size()); set_intersection(v.begin(), v.end(), v1.begin(), v1.end(), v3.begin()); for_each(v3.begin(), v3.end(), [](int a) {if(a!=0)cout << a << " "; }); }
-
set_difference:保存第一个中有第二个没有的元素
-
#include<iostream> #include<algorithm> #include<numeric> #include<vector> #include<iterator> using namespace std; int main() { vector<int> v = { 1,2,3,4,5,6 }; vector<int> v1 = { 4,5,6,7,8,9}; vector<int> v3(v.size() + v1.size()); set_difference(v.begin(), v.end(), v1.begin(), v1.end(), v3.begin()); for_each(v3.begin(), v3.end(), [](int a) {if(a!=0)cout << a << " "; }); }
-
set_symmetric_difference:对称差集
#include<iostream> #include<algorithm> #include<numeric> #include<vector> #include<iterator> using namespace std; int main() { vector<int> v = { 1,2,3,4,5,6 }; vector<int> v1 = { 4,5,6,7,8,9}; vector<int> v3(v.size() + v1.size()); set_symmetric_difference:(v.begin(), v.end(), v1.begin(), v1.end(), v3.begin()); for_each(v3.begin(), v3.end(), [](int a) {if(a!=0)cout << a << " "; }); }
-
make_heap:生成一个堆
-
include<iostream> #include<algorithm> #include<numeric> #include<vector> #include<iterator> using namespace std; int main() { vector<int> v = {1,3,6,8,6,6,2,0,9,0}; make_heap(v.begin(), v.end());//生成一个堆 }
-
pop_heap:出堆(没有真正删除,只是放在了容器末尾,需要手动删除)
-
#include<iostream> #include<algorithm> #include<numeric> #include<vector> #include<iterator> using namespace std; int main() { vector<int> v = {1,3,6,8,6,6,2,0,9,0}; make_heap(v.begin(), v.end());//生成一个堆 pop_heap(v.begin(),v.end());//出堆 }
-
push_heap:入堆
-
#include<iostream> #include<algorithm> #include<numeric> #include<vector> #include<iterator> using namespace std; int main() { vector<int> v = {1,3,6,8,6,6,2,0,9,0}; make_heap(v.begin(), v.end());//生成一个堆 push_heap(v.begin(), v.end());//入堆 }
-
sort_heap:堆排序
-
#include<iostream> #include<algorithm> #include<numeric> #include<vector> #include<iterator> using namespace std; int main() { vector<int> v = {1,3,6,8,6,6,2,0,9,0}; make_heap(v.begin(), v.end());//生成一个堆 sort_heap(v.begin(), v.end(), less<int>());//堆排序(需要和创建时一致) }
C++STL算法篇(下)
最新推荐文章于 2024-08-06 16:24:59 发布