#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
cout << "Hello World!" << endl;
//vecotr动态数组的空间分配策略:
vector<int> v; //用容器模板定义v
v.reserve(20); //将空间设定为20
for(int i = 0; i < 20; i++)
{
//cout << "有效元素的个数:" << v.size() << "容器对象的容量的空间大小:" << v.capacity() << endl;
v.push_back(rand() % 100 + 1); //插入1-100之间的数
}
//遍历vector容器:其中iterator是迭代器
for(vector<int>::iterator it = v.begin(); it != v.end(); it++)
{
cout << *it << " ";
}
cout << endl;
//遍历vector容器:auto能自动判断it的类型
for(auto it = v.begin(); it != v.end(); it++)
{
cout << *it << " ";
}
cout << endl;
//在迭代器支持的情况下,枚举for循环:
for(int k:v) //k的值会随着迭代器值的更改发生变化,即容器中的值会不断赋值给k
{
cout << k << " ";
}
cout << endl;
//使用泛型算法遍历容器:
for_each(v.begin(),v.end(),[](int val){cout << val << " ";});
cout << endl;
//需求:在容器的偶数元素前插入一个100的值
for(auto it = v.begin();it != v.end();it++)
{
if(*it%2 == 0){
it = v.insert(it,100);
it++;
}
}
for(int k:v)
{
cout << k << " ";
}
cout << endl;
for(auto it = v.begin(); it != v.end();)
{
if(*it%2 == 0 && *it == 100){
it = v.erase(it);
}else{
it++;
}
}
for(int k:v){
cout << k << " ";
}
cout << endl;
//使用sort排序算法 ,lambda用作自定义的排序规则,返回值为true表示1应该在2前
sort(v.begin(),v.end(),[](int val1,int val2){return val1 > val2;});
for(int k:v){ //输出的是倒序排列的
cout << k << " ";
}
cout << endl;
//使用二分法查找某个数据是否在这个已经排序的序列中,必须是已经排序的序列
//greater<int> 表示按照降序进行比较,less<int>是按照升序进行比较
bool ok = binary_search(v.begin(),v.end(),70,greater<int>());
if(ok){
cout << "70在这个已经排序的序列中" << endl;
}else{
cout << "不在这个已经排序的序列中" << endl;
}
//find与findif 在数列中查找某个元素:返回某个第一位出现位置的迭代器
auto it = find(v.begin(),v.end(),70);
if(it != v.end()){
cout << "70所在的下标位置" << it-v.begin() << endl;
}else{
cout << "没有找到70这个值" << endl;
}
//按序插入39,find_if用于在指定范围内查找出现的第一个元素,区间左闭右开
//lambda表达式,定义查找条件,并返回一个bool值,表示是否满足条件
//如果这个值小于39,则在该位置插入39
it = find_if(v.begin(),v.end(),[](int val){return val< 39;});
if(it != v.end()){
it = v.insert(it,39);
}else{
cout << "没有找到符合条件的元素" << endl;
}
for(int k:v){
cout << k << " ";
}
cout << endl;
return 0;
}
一段代码让你了解基本泛型算法
最新推荐文章于 2024-09-02 13:43:09 发布