#include<bits/stdc++.h>
using namespace std;
int main()
{
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
// //scanf与printf
// int a,b;
// scanf("%d %d",&a,&b);
// printf("%d %d",a,b);
// double a,b;
// scanf("%lf %lf",&a,&b);
// printf("%.3lf %.5lf",a,b);//.3表示保留三位小数;.5表示保留五位小数;且都是自动四舍五入
// //字符串数组
// char s[10];
// scanf("%s",s);//不需要&;
// scanf("%[^\n]",s)//换成这种格式即可识别空格;
// printf("%s",s); //但是不能读取空格
// //cout
// int a,b;
// cin>>a>>b;//输入a,b;
// cout<<a<<b;//输出a,b;
// double a,b;
// cin>>a>>b;
// cout<<fixed<<setprecision(3)<<a<<' '<<b<<'\n';//一次setprecision(3)就可以影响后面输出的所有结果都是保留三位
// cout<<fixed<<setprecision(3)<<a<<' '<<setprecision(5)<<b<<'\n';//中间插一个 setprecision(5)让b保留五位小数
// //自动四舍五入
// char s[10];//string s;
// cin>>s;
// cout<<s;//无法识别空格;
//
// string s;
// cin>>s;
// cout<<s;//仍然无法识别空格
// //getline(cin,s);//这种格式可以识别空格
// //取消同步流,加快cin与cout,减少运行超时;
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
// 还有就是scanf/printf一般不与cin/cout混合使用,后期可能会出现某些潜在问题;
//<string>头文件
// //string的声明和初始化
// //声明一个空的字符串
// string s1;
//
// //使用字符串字面量初始化字符串
// string s2="hello,world!";
//
// //使用另一个字符串初始化字符串
// string s3=s2;
//
// //使用部分字符串初始化
// string s4=s2.substr(0,5);//substr(起始位置,长度) ,本例题中,substr将字符串a的前三个字符赋予了c;
//
// //使用字符数组初始化字符串
// char aaa[]="hello,world!";
// string s5(aaa);
//
// //使用重复的字符初始化字符串
// string s6(5,'A');//5是数量,'A'是被重复的字符 ;
//
// //输出字符串内容
// cout<<"s1="<<s1<<endl;
// cout<<"s2="<<s2<<endl;
// cout<<"s3="<<s3<<endl;
// cout<<"s4="<<s4<<endl;
// cout<<"s5="<<s5<<endl;
// cout<<"s6="<<s6;
// char a[10];
// scanf("%s",a);
// printf("%s\n",a);
// string s(a);
// //printf("%s",s);//printf无法输出string类型,但是cout可以
// //用c_str()将string转换为char再用printf()输出;
// printf("%s",s.c_str());
//string的各项基本操作
// //获取字符串长度(length/size)
// string s1="hello,world!";
// int length=s1.length();//或者 int length =s1.size();
// cout<<"length:"<<length<<endl;
//拼接字符串(+或者append)
// string s1="hello";
// string s2="world!";
// string result1=s1+","+s2;
// string result2=s1.append(",").append(s2);
// cout<<result1<<endl<<result2;
// //字符串查找(find)
// string s1="hello,world1!";
// int weizhi1=s1.find("world");
// int weizhi2=s1.find("fre");
// cout<<weizhi1<<endl<<weizhi2;
// //字符串替换 (replace)
// string s1="hello,world!";
// s1.replace(6,5,"ok");
// cout<<s1;
// //字符串提取(substr)
// string s1="hello,world!";
// string s2=s1.substr(6,5);
// cout<<s2;
// //字符串比较(compare)
// string s1="abc";
// string s2="def";
// string s3="abc";
// int result=s1.compare(s2);
// int result2=s1.compare(s3);//相同等于0
// cout<<result<<endl<<result2;
//遍历string的两种方法
// //1,循环枚举下标;
// string s1="hello";
// for(int i=0;i<s1.size();i++)
// cout<<s1[i]<<endl;
//2,auto枚举(其中&表示取引用类型,如果对i修改将会改变原来的值)
// string s="hello";
// for(auto i:s)
// {
// cout<<i;
// i='a';//此处修改无效,s2的值不会有改变
// }
// cout<<endl;//此时s="hello";
// for(auto &i:s)
// {
// cout<<i;
// i='a';//此处修改无效,s2的值不会有改变
// }
// cout<<endl;//此时s="aaaaa";
// <cctype>头文件
// //检测一个字符是否为小写或者大写字母(islower/isupper)返回值是bool类型
// char ch1='A';
// char ch2='a';
// if(islower(ch1))
// cout<<"是小写"<<endl;
// else
// cout<<"是大写"<<endl;
// if(isupper(ch2))
// cout<<"是大写"<<endl;
// else
// cout<<"是小写"<<endl;
// //转换字符为小写或大写(tolower/toupper)
// char ch1='A';
// char ch2='a';
// //使用 tolower 函数将字符转换为小写字母,toupper()同理。
// char ch3= tolower(ch1);
// //使用 toupper 函数将字符转换为大写字母
// char ch4= toupper(ch2);
// cout<<ch3<<endl<<ch4;
//Ascii码
//65-90//A-Z;
//97-122//a-z;
//二分查找
//二分查找的前提
//库函数只能对数组进行二分查找。
//对一个数组进行二分查找的前提是这个数组中的元素是单调的
//所以二分查找的前提就是排序(sort)
//二分查找是算法,需要一个算法函数(binary_search)
//binary_search通过二分查找算法来确定序列中是否存在目标元素
// vector<int> numbers={1,3,5,7,9};
// int target=5;
// bool found=binary_search(numbers.begin(),numbers.end(),target);
// cout<<found;//存在5,所以found=1;
//lower_bound/upper_bound
//大前提==数组必须是为非降序
//初始化v
// vector<int> v={5,1,7,3,10,18,9};
// sort(v.begin(),v.end());//对v排序
// for(auto &i:v)
// cout<<i<<' ';
// cout<<'\n';
// //找到数组里面第一个大于等于8的元素的位置
// cout<<(lower_bound(v.begin(),v.end(),8)-v.begin()); //注意是元素位置不是元素值,本例题为4;
//排序sort//使用的是快速排序时间复杂度为O(nlogn)
//头文件<algorithm>
//sort(起始地址,结束地址,*比较函数);
// //1,对数组排序
// int a[5];
// //读取元素
// for(int i=1;i<=4;i++)
// cin>>a[i];
// //对数组进行排序
// sort(a+1,a+3+1);
// //输出
// for(int i=1;i<=4;i++)
// cout<<a[i]<<' ';
// //2,对vector排序
// //初始化v
// vector<int> v={1,5,6,8,3};
// //对数组进行排序
// sort(v.begin(),v.end());
// //输出
// for(int i=0;i<v.size();++i)
// cout<<v[i]<<' ';
// //sort默认是升序,但是我们可以自定义比较函数
// bool cmp(int u,int v)
// {
// return u>v;
// }
// //初始化
// vector<int> v={5,8,3,9,1};
// //对数组经行排序,降序
// sort(v.begin(),v.end(),cmp);//或者写入一个伪函数(自学)
// //输出
// for(auto i:v)
// cout<<i<<' ';
// //最值查询(min和max函数)
// int a[4]={1,2,5,3};
// int m=max(a[0],a[3]);//这种函数只能传入两个值,或一个列表
// int n=std::min({1,2,3,4});
// cout<<m<<endl<<n;
//min_element/max_element
//时间复杂度为O(n);
//初始化
// vector<int> v={5,1,3,9,11};
// //输出最大的元素,*表示解引用,即通过地址(迭代器)得到值
// cout<<*max_element(v.begin(),v.end())<<'\n';
//全排列next_permutation()函数
//next_permutation函数用于生成当前序列的下一个排列。
// 它按照字典序对序列进行重新排列,如果存在下一个排列,
// 则将当前序列更改为下一个排列,并返回true;
// 如果当前序列已经是最后一个排列,则将序列更改为第一个排列,并返回 false。
//初始化
// int v[3]={1,2,3};
// do
// {
// cout<<"Next permutation: ";
// for(int i=0;i<=2;i++)
// cout<<v[i]<<' ';
// cout<<endl;
// } while(next_permutation(v,v+3));
// cout<<endl;
//next_permutation()函数是由当前低位向高位全排列/prev_permutation()函数与之相反
// //其它库函数
// //memset()函数 //头文件<cstring>
// //一般用来初始化
// int a[5];
// memset(a,-1,sizeof(a));
// for(int i=0;i<=4;i++)
// cout<<a[i]<<' ';//全被初始化为0 //但是一般只能用来全部初始化为-1或者0,因为它跟字节有关;
// //swap()函数
// int a=10;
// int b=20;
// swap(a,b);
// cout<<a<<' '<<b;//a和b直接交换
// //reverse()函数/反转函数
// //头文件<algorithm>
// std::vector<int> v={1,2,3,4,5};
// std::reverse(v.begin(),v.end());
// for(auto i:v)
// std::cout<<i<<' ';
//unique()函数
//unique(first,last)
// 1.first:指向容器中要去重的第一个元素的迭代器
// 2.last:指向容器中要去重的最后一个元素的下一个位置的迭代器
std::vector<int> v={1,1,2,2,3,3,3,4,4,5};
auto it=std::vt.erase(unique(v.begin(),v.end()));
for(auto i:v)
std::cout<<i<<' ';//1 2 3 4 5 3 4 4 5
// int n,i;
// cin>>n;
// int a[100000];
// //定义一个数组
// for(i=0;i<n;i++)
// {
// cin>>a[i];
// }
// sort(a,a+n);
// //运用sort排序
// int x=unique(a,a+n)-a;//关键点
// //这里x表示去重后还剩多少个数
// //记得减去前端点
// cout<<x<<endl;
// //x就是排序后没有重复元素的长度
// for(i=0;i<x;i++)
// {
// cout<<a[i]<<" ";
// }//输出
return 0;
}
c++基础表达式
最新推荐文章于 2024-07-24 08:30:00 发布