I.vector
1.头文件:#include<vector> //容器vector是一个能实现随机存取、插入删除的动态数组,还可以当栈使。
2.创建: vector<int> v1; // < >里可以是struct或者vector嵌套:vector< vector<int> > ivec;
vector是一个类模板,创建一个vector的过程称为实例化。
3.初始化:
- vector<T> v2(v1); // 效果同拷贝初始化 vector<T> v2=v1;
- vector<T> v2(n,val);
- vector<T> v2{a,b,c,d}; // vector<T> v2={a,b,c,d};
- 数组指针
-
int iarray[]={0,1,2,3,4,5,6,6,6,7,8}; vector<int> v1(iarray,iarray+sizeof(iarray)/sizeof(int));
4.尾部插入数字:v1.push_back(a); // pop_back();
5.下标实现随机存取: v1[0]=a;
6.常用函数: empty() size() clear() <=
7.使用迭代器访问元素.
vector<int>::iterator it; for(it=v1.begin();it!=v1.end();it++) cout<<*it<<endl;
8.插入和删除 insert,erase 配合迭代器,如删除所有值为8的元素
v1.insert(v1.begin()+i,a); //在第i+1个元素前面插入a
v1.erase(v1.begin()+2); //删除第3个元素
9.#include<algorithm>
(1) 元素翻转:
reverse(vec.begin(),vec.end()); //将元素翻转(在vector中,如果一个函数中需要两个迭代器,一般后一个都不包含.)
(2)排序:
bool Comp(const int &a,const int &b){ return a>b; }
sort(vec.begin(),vec.end()); //升序排列
sort(vec.begin(),vec.end(),Comp) //降序排序
II.string
1.头文件:#include<string>
2.创建与初始化:类似vector
3.写入读取:
- cout<<s; cin>>s; //以空白(空格、换行、制表符)判断开始结尾,并忽略之
- getline(cin,s); //读一行,以换行符判断结束,并抛弃换行符
4.empty, size, +, =, <, [], append/push_back
5.关于字符变量的函数:isalnum,isalpha,isdigit / tolower,toupper <cctype>
6.高级:
- 子串: string substr(int pos = 0,int n = npos) const;//返回pos开始的n个字符组成的字符串
- 交换: void swap(string &s2); //交换当前字符串与s2的值
- 查找函数:
- int find(char c, int pos = 0) const;//从pos开始查找字符c在当前字符串的位置
- int find(const char *s, int pos, int n) const;//从pos开始查找字符串s中前n个字符在当前串中的位置
- int find(const string &s, int pos = 0) const;//从pos开始查找字符串s在当前串中的位置
III.map
1.头文件:#include<map> //容器map是一个能实现key到value单射的关联容器,对应数据结构为hash表,其内元素按键值升序排列,键值唯一。
2.构造:map <string,int> m1;
3.添加元素: m1["hello"]=5; //下标既能访问也能赋值也能添加,insert()添加效率高 insert(map<int, CString> :: value_type(2, "Two"))
4.常用函数: empty() size() clear() 迭代器 begin() , end(), erase() // m1.erase("hi"); m1.erase(it); m1.erase(it,it+5);
5.按键值查找一个元素 //根据key值快速查找记录,查找的复杂度基本是Log(N)
- 返回其迭代器: find() // if( m1.find("hi")==m1.end() ) 如果该key不存在
- 返回指定元素出现的次数: count()
IV. struct
//Definition for singly-linked list. struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} };
typedef struct rect { int id; int length; bool operator< (const rect &a) const { if(id!=a.id) return id<a.id; else { if(length!=a.length) return length<a.length; } } }Rect;