c11
一、智能指针
1a、 头文件 __,三个智能指针__
1b、
单个数据 智能指针转换能自动释放的,lamda
DecodeFrame* dfr = new DecodeFrame;
-->____
数组智能带自动释放, 并拷贝数据过去
BYTE* tmpbuf = new BYTE[640 * 360];
memcpy(tmpbuf ,videoFrame->data[0],640*360);
-->__
二、lambda
[] () -> int { return 1; }
也就是
[captures] (params) -> ret {Statments;}
1、ret为什么一般可省略
2、captures = 和& 表示__
3、在函数内部一样使用局部变量、成员变量 (不类似于闭包,有生命周期的,thi label变null)
4、foreach 用lambda写法
三、 std::bind std:bind
1、头文件
2、绑定成员函数的方法
四、 stl去除前后空格
五 cpp11线程
//有时间的话看看cpp核心准则
1a:单个
std::shared_ptr<DecodeFrame> dfr(static_cast<DecodeFrame*>( new DecodeFrame), [&](DecodeFrame *p) { delete p;});
数组
std::shared_ptr<BYTE> tmpbuf (new BYTE[640 * 360], [](int *p) { delete[] p; } ); //std::default_delete<BYTE[]>()
memcpy(tmpbuf.get(),videoFrame->data[0],640*360);
二
1、 有一个return 就返回了
2、传值方式和传引用方式
三、1、<functional>
2、
class Test1{ public: void fun(int val){ cout << "hello world " << val << endl; } }; Test1 t; std::function<void(int)> pf = std::bind(&Test1::fun, t, 2); pf(4);
四
inline std::string trim(std::string source) { std::string result = source.erase(source.find_last_not_of(" ") + 1); return result.erase(0, result.find_first_not_of(" ")); }
五、
std::string ExeVlcCmd(wstring szIperfCmd){ return ""; } thread t(ExeVlcCmd, mycmd); t.detach();