queue 队列
- 只能访问首尾 .font() .back()
- 只能移除第一个 .pop()
- 只能在尾部添加 .back()
stack 堆栈
- 只能移除顶部 .pop() 或者添加顶部 .push() 或者访问顶部 .top()
- 想访问下面的,只能把上面的都删除
struct
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode() : val(0), left(nullptr), right(nullptr) {}
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
};
void my_TreeNode()
{
TreeNode a,b(5);
TreeNode c(10,&a,&b);
cout<<a.val<<endl;
cout<<b.val<<endl;
cout<<c.left->val<<endl;
cout<<c.right->val<<endl;
}
typedef
typedef unsigned char BYTE;
在这个类型定义之后,标识符 BYTE 可作为类型 unsigned char 的缩写
对结构体使用 typedef 来定义一个新的数据类型名字,然后使用这个新的数据类型来直接定义结构变量,
typedef struct Books
{
char title[50];
char author[50];
char subject[100];
int book_id;
} Book;
int main( )
{
Book book;
}
默认参数与重载
//# 重载与默认参数
void cnm(int a=1)
{
cout<<"a="<<a<<endl;
}
void cnm(int a,int b)
{
cout<<"a="<<a<<endl;
cout<<"b="<<b<<endl;
}
int main()
{
const int a=99;
const int b=100;
cnm();
cnm(a);
cnm(a,b);
}
输出
a=1
a=99
a=99
b=100
函数模板
lambda
匿名函数
#include<iostream>
#include<thread>
#include <windows.h>
using namespace std;
void lambda1()
{
//基本lambda语法,详细看csdn
auto lam_f=[](int a, double b)
{
cout << "lambda2 "<<a << ' ' << b << endl;
cout<<"lambda2 id"<<std::this_thread::get_id()<<endl;
};
lam_f(5,6);
}
void lambda2()
{
//lambda线程
auto lam_f=[](int a, double b)
{
cout << "lambda1 "<<a << ' ' << b << endl;
cout<<"lambda1 id"<<std::this_thread::get_id()<<endl;
};
thread t3(lam_f,3,4);
t3.detach();
}
//类中启动 lambda线程
class lambda3
{
public:
void run(int a,int b)
{
cout<<"lambda3 id"<<std::this_thread::get_id()<<endl;;
for(int i=a;i<b;i++)
{
if(i>298)
{
cout<<"get one"<<endl;
}
}
}
std::thread t(int a,int b)
{
return std::thread([=]{run(a,b);});
}
//开始启动多线程工作
void thread_process(int a,int b)
{
std::thread th=t(a,b);
th.detach();
}
};
int main()
{
/*
[外部变量访问方式说明符] (参数表) -> 返回值类型
{
语句块
}
*/
lambda1();
lambda2();
lambda3 l3;
l3.thread_process(5,6);
Sleep(3);
}