- vector<int>num ; 往num中添加变量,num.push_back(i); vector中变量个数vector.size()
- unordered_map<int,int>hash ,类似map,
- 存储的是key_value形式,查找不成功情况hash.find(xxx) = hash.end(); 添加变量hash[key] = value;
- 字符串str长度,str.length(),char *长度,strlen(str);
- unordered_map遍历;
- typedef unordered_map<int, int>mymap;
- mymap hash;
- for(mymap::iterator i=hash.begin();i!=hash.end();i++)
{
cout<<i->first<<" "<<i->second<<endl;
}
- 栈的用法,#include<stack> stack<int>stk , empty()判断是否为空,size()元素个数,pop()弹出栈顶元素不返回其值,top()返回栈顶元素,push()在栈顶压入新元素
- 队列, #include <queue> queue<int> q, empty(),size(),用法同上, pop()删除队首的元素,push()在队尾压入新元素,front()返回队首的元素 ,back()返回队尾的元素
- map和unordered_map同异。都是key-value形式,可以通过key快速索引value,不同的是unordered_map不会根据key的大小进行排序,其内部元素是无序的,而map中的元素是按照二叉树索引存储的,进行中序遍历会得到有序遍历
- map<int,int>,第二个值默认为0
- round函数实现, return (val> 0.0) ? floor(val+ 0.5) : ceil(val- 0.5);floor(向下取整数部分),ceil向上取整,round(11.5) 12;round(-11.5) -12
- pthread(POSIX thread)实现多线程,
- c++编译时-O1,提供基础级别的优化,-O2提供更加高级的代码优化,-O3提供最高级的代码优化
- 结构体:struct List{ int val; struct List*next;List(int x):val(x),next(NULL) };新建时候直接new就可以了
- int转string,int a=5; stringstream ss; ss<<a; string str = ss.str();
- 牛客替换空格,char * str; char *pstr1 = str +10;是将str的'\0'后移十位,此时*str的长度变长
- 短路求值: 求1+2+3+n;
- int sum(int n)
- {
- int s=n;
- s&&(s=s+sum(n-1))
- return s;
- }
- 位运算实现加减:num1&num2可以知道哪些位是要进1的,然后左移一位,和num1^num2作和
- int Add(int num1, num2)
- {
- int (num2==0)
- return num1;
- int num=num1^num2;
- int carry = (num1&num2)<<1;
- return Add(num, carry);
- }
- vector操作方法总
- push_back(num),在尾部添加元素num
- insert(it,num),在迭代器it添加元素
- erase(it),删除迭代器指定的元素
- clear(),清空vector中所有的元素
- pop_back(),删除末尾的元素
- size(),计算大小
- 结构体初试函数写法:
- struct TreeNode{
- int val;
- struct TreeNode *left;
- struct TreeNode *right;
- TreeNode(int x) :
- val(x), left(NULL), right(NULL){
- }
- }
- struct TreeNode{
- 判断二叉树是否是平衡二叉树
- 求每个节点的左右深度之差,若超过1,则false,若小于等于1,则执行第二步
- 判断左右子树是否都是平衡二叉树,若都是则true,否则是false
- string转char*
- string str = "abcdefg";
- char * buffer = new char[str.size()+1];
- strcpy(buffer, str.c_str());
- char* 转数字
- char * ch="12345";
- int num=0;
- while(*ch!='\0')
- {
- num = num*10+(*ch-'0');
- }