目录
一、容器
1.vector数组
主要内容:
①定义方式
②输出单个元素
③遍历输出
主要函数:
①获取大小v.size()
②获取首指针,获取尾指针v.begin()/v.end()
#include <iostream> #include <vector> using namespace std; int main(void){ //定义方式 vector<int> v1; vector<int> v2(10); vector<int> v3(10,4); //输出单个元素 cout << v2[0] << endl;//默认为0 cout << v3[0] << endl;//输出4 //获取大小 cout << v2.size() << endl; cout << v3.size() << endl; //遍历方式 for(int i = 0; i < v3.size(); i++){ cout << v3[i] << " "; } cout << endl; //常用遍历方式:迭代器 for(auto it = v3.begin(); it!=v3.end(); it++){//输出与上一排相同 cout << *it << " ";//访问要对it指针取值 } cout << endl; return 0; }
2.Set集合
主要内容
①定义方式
②增删改查
③遍历
主要函数
①插入s.insert()
②查找s.find()
③获取头尾指针s.begin()/s.end()
④删除s.erase()
#include<iostream> #include<set> using namespace std; int main(void){ //定义方式 set<int> s; //插入元素 s.insert(3); //输出首元素 cout << *(s.begin()) << endl; //循环插入 for(int i = 1; i <6; i++){ s.insert(i); } //迭代输出 for(auto it = s.begin(); it != s.end(); it++){ cout << *it << " ";//输出1 1 2 3 4 5 } //查询集合中是否含有该元素 cout << endl << (s.find(2) != s.end()) << endl; cout << (s.find(10) != s.end()) << endl; //删除集合中 的某元素 s.erase(1); cout << (s.find(1) != s.end()) <<endl; return 0; }
3.map映射
//unordered_map省去排序过程,如果map超时可使用 #include <iostream> #include <map> using namespace std; int main(void){ //定义方式 map<string,int> m; //设置键值对的方式 m["hello"] = 2; cout << m["hello"] << endl; cout << m["world"] << endl; m["world"] = 3; m[","] = 1; //迭代输出键与值的方式 for(auto it = m.begin(); it != m.end(); it++){ cout << it->first << " " << it->second << endl; } //输出第一个与最后一个键值对的方式 cout << m.begin()->first << " " << m.begin()->second << endl; cout << m.rbegin()->first << " " << m.rbegin()->second << endl; return 0; }
4.stack栈
#include <iostream> #include <stack> using namespace std; int main() { stack<int> s;//定义一个空栈s for (int i = 0; i < 6; i++) { s.push(i); } cout << s.top() << endl; // 访问s的栈顶元素 cout << s.size() << endl; // 输出s的元素个数 s.pop(); // 移除栈顶元素 return 0; }
5.queue队列
#include <iostream> #include <queue> using namespace std; int main() { queue<int> q; for (int i = 0; i < 6; i++) { q.push(i); } cout << q.front() << " " << q.back() << endl; cout << q.size() << endl; q.pop(); return 0; }
二、算法
1.bitset位运算
#include <iostream> #include <bitset> using namespace std; int main(){ bitset<5> b("11");//5表示w个二进位 //初始化方式: //bitset<5> b; 都为0 //bitset<5> b(u); u为unsigned int, 如果 u = 1,则被初始化为10000 //bitset<5> b(s); s为字符串,如”1101“ ->”10110“ //bitset<5> b(s, pos, n); 从字符串的s[pos]开始,n位长度 for(int i = 0; i< 5; i++){ cout<< b[i]; } //很多方法都是针对1的 cout << endl << b.any();//b中是否存在1的二进制位? cout << endl << b.none();//b中不存在1吗? cout << endl << b.count();//b中1的二进制位的个数 cout << endl << b.size();//b中二进制位的个数 cout << endl << b.test(2);//测试下标为2处是否二进制位为1 b.set(4);//下标4变为1 b.reset();//所有位归零 b.reset(3);//下标3处归零 b.flip();//b的所有二进制位逐位取反 unsigned long a =b.to_ulong();//b转换成unsigned long类型 return 0; }
2.sort排序
#include<iostream> #include<vector> #include<algorithm> using namespace std; bool cmp(int a, int b){//自定义cmp函数 return a > b; } int main(void){ vector<int> v(10); for(int i = 0; i < 10; i++){ cin >> v[i]; } //注意vector传入方式 sort(v.begin(), v.end());//默认从小到大 for(auto it = v.begin(); it != v.end(); it++){ cout << *it << " "; } int arr[10]; for(int i = 0; i < 10; i++){ cin >> arr[i]; } //注意数组的传入方式 sort(arr,arr+10,cmp);//传入自写的cmp,从大到小 for(int i = 0; i < 10; i++){ cout << arr[i] << " "; } }
三、C11特性
1.auto声明
2.to_string
3.stoi、stod...
#include<iostream> #include <set> #include <string> using namespace std; int main(void){ //一、auto声明:自动推断类型 auto x = 100; auto y = 1.5; set<int> s; s.insert(4); s.insert(2); s.insert(5); for(set<int>::iterator it = s.begin(); it != s.end(); it++) { cout << *it << " "; } cout << endl; for(auto it = s.begin(); it != s.end(); it++){ cout << *it << " "; } cout << endl; //二、 to_string string s1 = to_string(123); cout << s1 << endl; string s2 = to_string(4.5); cout << s2 << endl; cout << s1 + s2 << endl; printf("%s\n", (s1 + s2).c_str());//如果想用printf输出string得加一个.c_str() //三、stoi、stod:string转化为对应的int和double型 string str = "123"; int a = stoi(str); cout << a << endl; str = "123.44"; double b = stod(str); cout << b << endl; //stof //sstold //stol //stoll //stoul //stoull return 0; }