当前位置: 首页 > news >正文

免费网站入口网站免费进最新长尾关键词挖掘

免费网站入口网站免费进,最新长尾关键词挖掘,东莞网站推广衣裙,网页制作和网站建设从前序与中序遍历序列构造二叉树 官方解析实在是记不住#xff0c;翻别人的题解发现了一个有意思的写法 class Solution { public:TreeNode* buildTree(vectorint preorder, vectorint inorder) {auto dfs [](auto dfs, auto…从前序与中序遍历序列构造二叉树 官方解析实在是记不住翻别人的题解发现了一个有意思的写法 class Solution { public:TreeNode* buildTree(vectorint preorder, vectorint inorder) {auto dfs [](auto dfs, auto lP, auto lI, auto rI) {if (lI rI) return (TreeNode*)nullptr;auto loc find(lI, rI, *lP);return new TreeNode(*lP, dfs(dfs, lP 1, lI, loc),dfs(dfs, lP (loc - lI) 1, loc 1, rI));};return dfs(dfs, preorder.cbegin(), inorder.cbegin(), inorder.cend());} }; 看起来简单有意思但是这个  auto dfs [](auto dfs, 是什么意思呢 lambda 自调用 C11借助std::function #include iostream #include functional int main(int argc, char* argv[]) {std::functionint(int) fib [fib](int n) { return n 2 ? n : fib(n - 1) fib(n - 2); };std::cout fib(5);return 0; }借助 std::function 代码修改如下 class Solution {public:TreeNode* buildTree(vectorint preorder, vectorint inorder) {functionTreeNode* (vectorint::const_iterator, vectorint::const_iterator, vectorint::const_iterator) dfs [dfs]( auto lP, auto lI, auto rI) {if (lI rI) return (TreeNode*)nullptr;auto loc find(lI, rI, *lP);return new TreeNode(*lP, dfs( lP 1, lI, loc),dfs(lP (loc - lI) 1, loc 1, rI));};return dfs( preorder.cbegin(), inorder.cbegin(), inorder.cend());}}; 这个function 是个啥没用过 C11 std::function 基础用法 std::function是C11标准库中提供的一种可调用对象的通用类型它可以存储任意可调用对象如函数指针函数对象成员函数指针和lambda表达式。std::function类模板是一个类似于函数指针的类型但它是可以处理任意可调用对象的并且可以检查调用对象是否为空。 需要头文件 functional  基本用法 std::functionreturn_type(parameter_types) var_name; std::function对象可以像普通函数一样调用并且可以使用bool类型的运算符来检查调用对象是否为空。 std::functionint(int, int) f; if (f)std::cout f(1, 2) std::endl; elsestd::cout f is empty std::endl; std::function可以存储智能指针避免内存泄漏 std::functionint(int, int) add std::make_sharedint(*)(int, int)([](int a, int b) { return a b; }); 这段代码定义了一个变量add它是一个std::function类型这种类型可以存储一个可调用的函数可以是函数指针、函数对象、lambda表达式等。该函数的签名为int(int, int)即返回值类型为int,接受两个int类型参数。变量add被赋值为一个指向匿名函数的指针。这个匿名函数接受两个int类型参数并返回它们的和。使用std::make_sharedint(*)(int, int)来创建该函数的共享指针 存储成员函数指针 调用类的成员函数 class A { public:int add(int a, int b) { return a b; } }; std::functionint(A, int, int) add A::add; A a; std::cout add(a, 3, 4) std::endl; 补充iterator与const_iterator及const iterator区别 如果你传递过来一个const类型的容器那么只能用const_iterator来遍历。 void Method(const vectorint vInt) {vectorint::const_iterator iter; } 1.iterator,const_iterator作用遍历容器内的元素并访问这些元素的值。iterator可以改元素值,但const_iterator不可改。跟C的指针有点像 (容器均可以iter,而vector还可以iter-n, itern,n为一整型,iter1-iter2:结果是difference_type类型表两元素的距离.) 2.const_iterator 对象可以用于const vector 或非 const vector,它自身的值可以改(可以指向其他元素),但不能改写其指向的元素值. 3.const iterator与const_iterator是不一样的声明一个 const iterator时必须初始化它。一旦被初始化后就不能改变它的值,它一旦被初始化后,只能用它来 改它指的元素,不能使它指向其他元素。(因此const iterator几乎没什么用途) 例 vectorint nums(10); // nums is nonconst      const vectorint::iterator cit nums.begin();      *cit 1;               // ok: cit can change its underlying element      cit;                  // error: cant change the value of cit 例读入一段文本到 vector 对象每个单词存储为 vector 中的一个元素。把 vector 对象中每个单词转化为小写字母。输出 vector 对象中转化后的元素每八个单词为一行输出                                                                                   --摘自Cprimer 3.14 中序与后序遍历序列构造二叉树 106. 从中序与后序遍历序列构造二叉树 - 力扣LeetCode /*** Definition for a binary tree node.* 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) {}* };*/ class Solution { public:TreeNode* buildTree(vectorint inorder, vectorint postorder) {functionTreeNode* (vectorint::const_reverse_iterator, vectorint::const_iterator, vectorint::const_iterator) dfs [dfs]( auto lP, auto lI, auto rI) {if (lI rI) return (TreeNode*)nullptr;auto loc find(lI, rI, *lP);return new TreeNode(*lP, dfs( lP (rI - loc), lI, loc),dfs(lP 1, loc 1, rI));};return dfs( postorder.crbegin(), inorder.cbegin(), inorder.cend());} }; 注意两点 1vectorint::const_reverse_iterator,  postorder.crbegin()  逆序迭代器 2new TreeNode(*lP, dfs( lP (rI - loc), lI, loc),                     dfs(lP 1, loc 1, rI));  计算移动位置与前序不同 参考C 实现lambda递归调用C11 - C23_c lamda 递归-CSDN博客 C11 std::function 基础用法_std::function用法-CSDN博客 iterator与const_iterator及const iterator区别
http://www.dnsts.com.cn/news/2700.html

相关文章:

  • 高端大气的ppt模板宁波seo外包引流推广
  • 龙华三网合一网站建设seo搜索如何优化
  • 湛江有没有做网站的培训网站搭建
  • 淘宝网站建设杭州做个电商平台要多少钱
  • 做五金国际网站哪个好网站宣传文案
  • 如何查看网站收录情况深圳sem优化
  • 做个网站需要什么设备跨境电商有哪些平台
  • 厦门做网站推广今天中国新闻
  • 郑州郑州网站建设河南做网站公司哪家好项目推广计划书
  • 网页特效代码免费网站外包公司怎么赚钱
  • 备案网站注意事项淘宝客seo推广教程
  • zencart网站地图生成怎么去做网络推广
  • wordpress ip排行好看的seo网站
  • 龙华网站建设网站定制培训网登录入口
  • 建筑网站转发西安seo关键字优化
  • 怎么做网站底部文件seo关键词优化价格
  • 日照网站建设咨询报价西安网站搭建
  • 制作一个网站的费用山东济南最新消息
  • 做网站优化用什么软件如何建立网上销售平台
  • 网站被做跳转怎么办seo辅助工具
  • 大连公司企业网站建设青岛网站快速排名提升
  • 网站建立计划书搜索引擎营销策划方案
  • 网站标签怎么做百度网页推广费用
  • 做网站视频用哪个视频编辑软件如何推广网站方法
  • 免费微网站与公众号平台对接搜索引擎营销方法
  • 做网站是哪个专业注册公司网上申请入口
  • 广发证券 网站谁做的百度推广工具
  • 做网络推广的网站兰州seo培训
  • 怎么做网站登陆战seo优化与推广招聘
  • 权威的合肥网站建设2023免费网站推广大全