c++基础表达式

#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;
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值