C/C++ 刷题小知识点
来源:互联网 发布:java写hello world 编辑:程序博客网 时间:2024/06/06 17:20
C/C++
(1)字符串操作
1)stringstream
类别:输入输出操作
用途:①二次输出(类似缓存) ②数据转换
①#include<iostream>#include<string>#include<sstream>using namespace std;int main(void){ string s, input; while(getline(cin, s)){ //getline 将一行内容给s,s的长度自动适配 cout << "S : " << s << endl; stringstream str(s); while(str>>input) cout << input << endl; } return 0;}②#include <string>#include <sstream>#include <iostream> int main(){ std::stringstream stream; std::string result; int i = 1000; stream << i; //将int输入流 stream >> result; //从stream中抽取前面插入的int值 std::cout << result << std::endl; // print the string "1000"}
运行结果:
(2)sort函数
1)sort
类别:排序
用途:①从小到大排序(默认) ②从大到小排序③less<数据类型>()//从小到大排序,greater<数据类型>()//从大到小排序
#include<cstdio>#include<algorithm>using namespace std;int a[10]={9,6,3,8,5,2,7,4,1,0};bool complare(int a,int b){ return a>b;}void Sort1(){ printf("从小到大 : "); sort(a, a + 10); for(int i = 0; i < 10; i++) printf("%d ", a[i]);}void Sort2(){ printf("从大到小 : "); sort(a, a + 10, complare); for(int i = 0; i < 10; i++) printf("%d ", a[i]);}int main(void){ printf("初始 : "); for(int i = 0;i < 10; i++) printf("%d ", a[i]); printf("\n"); Sort1(); printf("\n"); Sort2(); return 0;}
//数据类型是string,对string进行排序#include<iostream>#include<algorithm>using namespace std;int main(void){ string str[] = { "adsfzcv", "a", "dsf", "werew" }; for(int i = 0; i < 4; i++) cout << str[i] << endl; sort(str, str + 4, greater<string>()); for(int i = 0; i < 4; i++) cout << str[i] << endl; return 0;}
(3)lower_bound()
1)lower_bound
用途:查找“大于或者等于x的第一个位置”,配合sort()
#include<cstdio>#include<algorithm>using namespace std;int str[] = {12, 32, 43, 54, 3, 5, 2, 1};int main(void) { sort(str, str + 8); int x = lower_bound(str, str + 8, 3) - str; printf("%d %d", x, str[x]); return 0;}
(4)map集合
1)map
类别:容器
用途:键值对(两属性相关)
下面提供2种简单常用的操作。
//若map<string, int> month_name来表示"月份名字到月份编号"的映射,然后用month_name["July"]=7这样的方式来赋值①#include<iostream>#include<map>using namespace std;int main(void){ map<string, int> Map; map<string,int>::iterator it; //迭代去 Map.insert(pair<string, int>("AA", 1)); //增加元素 Map.insert(pair<string, int>("BB", 1)); for (it = Map.begin(); it != Map.end(); it++){ //循环 cout << it -> first << " " << it -> second << endl; }}②#include<iostream>#include<map>using namespace std;int main(void){ map<long long,int> Map; for(int i = 0 ; i < 5; ++i) Map[i] = 1; //添加5个元素 for(int i = 2; i < 10; ++i){ if(Map.count(i)){ //是否存在这个元素 Map[i]++; //第二个键++ cout << "存在 " << Map[i] <<endl; }else { cout << i << "不存在"<<endl; } } return 0;}③键值对<string, int> 增加int值#include<iostream>#include<map>using namespace std;int main(void){ int N; while(cin >> N && N != 0){ int cnt = 0; map<string, int> Map; map<string, int>::iterator it; string str; for(int i = 0 ; i < N; ++i){ cin >> str; for(it = Map.begin(); it != Map.end(); ++it){ if(str == it -> first) (it -> second)++; } if(it == Map.end()) Map.insert(pair<string, int>(str, 1)); } for(it = Map.begin(); it != Map.end(); ++it){ if(it -> second > cnt){ cnt = it -> second; str = it -> first; } } cout << str << endl; } return 0;}
(5)优先队列
1)priority_queue
类别:容器
用途:优先队列(从小到大 或 从大到小)
详细说明:STL里面默认用的是 vector. 比较方式默认用 operator< , 所以如果你把后面俩个参数缺省的话,即priority_queue pq;
如果要用到小顶堆,则一般要把模板的三个参数都带进去。
STL里面定义了一个仿函数 greater<>,对于基本类型可以用这个仿函数声明小顶堆
优先队列就是大顶堆,队头元素最大。
下面简单常用的操作。
//push() :入队//pop() :出队//top() : 取队首元素(但不删除)#include<iostream>#include<queue>#include<vector>using namespace std;int main(void){ //greater 是从小到大,默认是从大到小 priority_queue<int , vector<int>, greater<int>> pq; for(int i = 21; i < 31; ++i) pq.push(i); while(!pq.empty()){ printf("%d ", pq.top()); pq.pop(); } return 0;}
(6)vector集合
1)vector
类别:容器
用途:字符串中插入删除某个字符等
下面简单常用的操作。
#include<cstdio>#include<vector>using namespace std;vector<char> vec;void print(){ vector<char>::iterator it; for (it = vec.begin(); it != vec.end(); ++it) printf("%c ", *it); printf("\n");}int main(void){ vec.clear(); vec.push_back('a'); vec.push_back('b'); vec.push_back('c'); vec.push_back('d'); vec.push_back('e'); vec.insert(vec.begin() + 2, 'f'); vec.size(); print(); vec.erase(vec.begin() + 2); vec.size(); print(); return 0;}
1 0
- C/C++ 刷题小知识点
- c知识点
- C 知识点
- C/C++code知识点
- C/C++【知识点笔记】
- C基础知识点小记
- c#知识点 net
- C/C++知识点1
- c语言知识点
- C/C++面试知识点
- C语言知识点
- object-c 知识点
- [C++]指针知识点小结
- Objective-C知识点汇总
- Objective-C语言知识点
- C知识点累积篇
- C语言常见知识点
- c语言知识点补遗
- C#运算符重载
- Servlet使用注解配置URl提示404错误
- Ubuntu下安装、配置和使用minicom
- 数据结构实验之栈一:进制转换
- [UOJ244]短路 结论+dp
- C/C++ 刷题小知识点
- mac book 配置
- Linux文本文件与WIN文本文件换行格式转换命令
- What is Angular 2? High level overview, feature and fundamentals.
- 什么是中间件
- 问题十一:用条件编译(#if…#endif)避免 main函数中测试代码在测试完成后就删除
- 数据结构实验之栈四:括号匹配
- C++ 语法实验室之 static 关键字
- 区间覆盖问题