- 万能头文件,以及如何提高cin cout 的打印速度:
#include<bits/stdc++.h> using namespace std; int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);//提高速度 int x,y; cin >> x >> y; cout << y << endl << x; return 0; }
- cin和cout不能读入空格,因为读到空格就默认结束了,所以用getline来读入字符串,然后用str(其实随便,看你string后面定义了什么).length()或者是str.size();来判断字符串长度即可
#include <bits/stdc++.h> using namespace std; int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); string str; int i,n; getline(cin,str);//注意这一行的格式 n=str.length();//读入字符串长度 for(i=0;i<n;i++) if((str[i]==' ' && str[i+1]!=' ') || str[i]!=' ') cout << str[i]; return 0; }
- 最好不要cin和getline混用,不然容易出问题,如果有用到to_string、stoi这两个函数,记得要记得把配置改成c++11,如-std=c++11;不然没用
#include <bits/stdc++.h> using namespace std; int main(){ string n; string s; int i,count=0; getline(cin,n); getline (cin,s); int j=stoi(n); for(i=0;i<j;i++){ if(s[i]!=' ') count++; } cout << count; return 0; }
- %d是正常打印,%02d的意思是是将数字按宽度为2,采用右对齐方式输出,若数据位数不到2位,则左边补0,如果是%2d则左边补空格
- 蓝桥杯日期题目模板,请熟记
#include <bits/stdc++.h> using namespace std; int main(){ for(int year=2000;year<=2024;year++) for(int month=1;month<=12;month++) for(int day=1;day<=31;day++) { if(month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12); else if (month==2) { if((year%4==0 && year%100!=0) || year%400==0) { if(day>29) break; } else { if(day>28) break; } } else { if(day>30) break; } } }
- 回文数要复习一下
- map的插入与遍历,可以对数据进行一对一操作,好用的很,从3
Alex 15
Simba 20
Owen 15 变为Alex 15 Owen 15 Simba 20
#include <bits/stdc++.h> using namespace std; map <string,int>mp; int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n,age; string s; cin >> n; for(int i=1;i<=n;i++) { cin >> s >> age; mp[s]=age; } //正向遍历 map<string,int>::iterator iter; for(iter=mp.begin();iter!=mp.end();iter++) { cout<< iter->first <<" " << iter->second << endl; } }
- 有关map如下:
1、定义:map<string,int>mp;类型,类型,名字,第一个是key,第二个是value
2、插入一个键值对:
1)mp.insert(make_pair("djh",20));
2)mp["djh"]=20; (类似于一个数组一样存储,像访问数组下标那样去访问key里的value;)
3)mp.emplace("djh",20);(和1)的效果一样)
3、删除:
1)mp.erase(key);删除值为key的元素
2)mp.erase(iter);删除迭代器所指向的元素如(mp.erase(mp.begin())
3)mp.clear();清空集合
4)mp.erase(iter1,iter2);删除区间中的函数如(mp.erase(mp.begin(),mp.end()))
4、求大小:
int siz=mp.size();(判断集合的大小)
bool flag=mp.empty();(集合判空)
5、查询
1)if(mp.find(key) != mp.end())
cout << mp[key] << endl;
2)if ( mp . count ( key )) // count 返回某个值元素的个数cout << mp [ key ] << endl ;3)auto iter = mp . lower_bound ( key ); // 求 key 的下界,返回指向大于等于某值的第一个元素的迭代器4)auto iter = mp . upper_bound ( key ); // 求 key 的上界,返回大于某个值元素的迭代器6、遍历map < string , int > :: iterator iter ; // 正向遍历for ( iter = mp . begin (); iter != mp . end (); iter ++ ){cout << iter -> first << " " << iter -> second << endl ; - set是一个有序的容器
1、定义:
#include <set>set < int > s ;2、插入: s . insert ( key );3、删除:s . erase ( key ); // 删除值为 key 的元素s . erase ( iter ); // 删除迭代器 iter 指向的元素,例如s.erase(s.begin());第 23 / 50 页 s . erase ( iter1 , iter2 ); // 删除区间 [iter1, iter2) 的所有元素,例如 s.erase(s.begin(), s.end());s . clear (); // 清空集合4、求大小:int siz = s . size (); // 求集合大小bool flag = s . empty (); // 集合判空5、查询if ( s . find ( key ) != s . end ()) // find 函数返回一个指向被查找到元素的迭代器cout << "exist" << endl ;if ( s . count ( key ) == 1 ) // count 返回某个值元素的个数cout << "exist" << endl ;set < int > :: iterator iter = s . lower_bound ( key ); // 求 key 的下界,返回指向大于等于某值的第一个元素的迭代器 lower要用if(iter!=s.begin())来用,下面一个用end()来用;set < int > :: iterator iter = s . upper_bound ( key ); // 求 key 的上界,返回大于某个值元素的迭代器6、遍历
set < int > :: iterator iter ; // 正向遍历for ( iter = s . begin (); iter != s . end (); iter ++ ){cout <<* iter << endl ;} - 字符串:
// 最常用的操作str . size (); // 返回字符串长度str . length (); // 返回字符串长度str . empty (); // 检查 str 是否为空,为空返回 1 ,否则返回 0str [ n ]; // 存取 str 第 n + 1 个字符str . at ( n ); // 存取 str 第 n + 1 个字符(如果溢出会抛出异常)// 反转reverse ( str . begin (), str . end ());// 查找str . find ( "ab" ); // 返回字符串 ab 在 str 的位置str . find ( "ab" , 2 ); // 在 str[2]~str[n-1] 范围内查找并返回字符串 ab在 str 的位置str . rfind ( "ab" , 2 ); // 在 str[0]~str[2] 范围内查找并返回字符串 ab在 str 的位置if ( str . find ( "ab" ) != string::npos ){ cout << " 下标为 :" << str . find ( "ab" ); }// 子串str . substr ( 3 ); // 返回 [3] 及以后的子串str . substr ( 2 , 4 ); // 返回 str[2]~str[2+(4-1)] 子串 ( 即从 [2] 开始 4个字符组成的字符串 )str . substring ( 5 , 10 ); // 返回 str[5]~str[9] 子串 ( 不包含结尾 )// 插入str . insert ( 2 , "sz" ); // 从 [2] 位置开始添加字符串 "sz" ,并返回形成的新字符串str . insert ( 2 , "abcd" , 3 ); // 从 [2] 位置开始添加字符串 "abcd" 的前3 个字符,并返回形成的新字符串str . insert ( 2 , "abcd" , 1 , 3 ); // 从 [2] 位置开始添加字符串 "abcd" 的前 [2]~[2+(3-1)] 个字符,并返回形成的新字符串// 删除str . erase ( 3 ); // 删除 [3] 及以后的字符,并返回新字符串str . erase ( 3 , 5 ); // 删除从 [3] 开始的 5 个字符,并返回新字符串// 替换str . replace ( 2 , 4 , "sz" ); // 返回把 [2]~[2+(4-1)] 的内容替换为 "sz"后的新字符串str . replace ( 2 , 4 , "abcd" , 3 ); // 返回把 [2]~[2+(4-1)] 的内容替换为"abcd" 的前 3 个字符后的新字符串// 追加str = str + "abc" ;str . push_back ( 'a' ); // 在 str 末尾添加字符 'a'str . append ( "abc" ); // 在 str 末尾添加字符串 "abc"
-
'A'(65) 'a'(97) '0'(48)
-
用sort() 可以对字符串进行字典序排序,从小到大排序,sort(s,s+n);
-
sprintf(str+1,"%d%02d%02d",year,month,day);
使用 sprintf 函数将当前年月日转换为字符串,并存储在数组 str 中。
蓝桥杯 day1
于 2024-04-09 02:06:21 首次发布