C++ algorithm库中的常用算法示例

因为需要准备蓝桥杯,所以复习一下 C++,在此作一下分享 . . .
文章没有演示结果,大家可以自行演示 . . .

查找

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

// 查找相邻元素的第一个元素 
adjacent_find(v.begin(), v.end());        
 
// 折半查找
binary_search(v.begin(), v.end(), 7);       
 
// 返回指定元素的个数
count(v.begin(), v.end(), 6);         
 
// 返回指定条件的个数、LAMBDA 初使用
count_if(v.begin(), v.end(), [](int x) {return x >= 3; });  
 
// 返回指定值的最小与最大索引
equal_range(v.begin(), v.end(), 2);        
 
// 查找指定元素 没有返回 end
find(v.begin(), v.end(), 9);         
 
// 返回一系列有条件的元素迭代器
find_if(v.begin(), v.end(), [](int x) {return x >= 3; });  

.

排序

vector <int> b{ 3, 3, 3, 4, 4, 5, 6, 9 };
vector <int> s(v.size() + b.size());

// 默认升序    // [](int x, int y) {return x >= y; } 
sort(v.begin(), v.end());       

// 合并有序
merge(v.begin(), v.end(), b.begin(), b.end(), s.begin());  

// 逆序
reverse(v.begin(), v.end());         

// 随机排序
random_shuffle(v.begin(), v.end());        

.

拷贝和替换

vector<int> c(v.size());

// 拷贝
copy(v.begin(), v.end(), c.begin());       

// 指定范围换值
replace(c.begin(), c.end(), 2, 666);       

// 交换两个容器中的内容
swap(c, b);              

// 输入值赋给标志范围内的所有元素
fill(v.begin(), v.end(), 5);         

.

集合算法

vector<int> uni(v.size() + b.size());
sort(v.begin(), v.end());
sort(b.begin(), b.end());

// 并集
//set_union(v.begin(), v.end(), b.begin(), b.end(), uni.begin()); 

// 交集  
//set_intersection(v.begin(), v.end(), b.begin(), b.end(), uni.begin()); 

// 差集
//set_difference(v.begin(), v.end(), b.begin(), b.end(), uni.begin());

.

遍历算法

// 遍历每一个元素 不可修改

for_each(uni.begin(), uni.end(), [](int x) {cout << x << endl; });  
vector<char> str{ 'a','s','d','g','v'};

// 遍历每一个元素,进行处理其中的数据
transform(str.begin(), str.end(), str.begin(), ::toupper);    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章