精华内容
下载资源
问答
  • RT 就比方说,我有一个导航,当导航上的某个A链接是当前页面的时候,给他加个class。 最好是能获取到当前页面的 路由 name 正在学Django 查不到相关资料 求大牛解答!
  • 开始我问了度娘,在知乎上找到了答案 —>《如何判断一个类是否为一个模板类的实例?》 上面这个链接中给出了完整的答案:struct is_kind_of_ { template <template <class> class TM, class T> static std::true_...

    我有一个模板类memory_cl<T>,我需要判断另一个类是否为它的子类,怎么实现呢?
    开始我问了度娘,在知乎上找到了答案 —>《如何判断一个类是否为一个模板类的实例?》
    上面这个链接中给出了完整的答案:

    struct is_kind_of_
    {
        template <template <class> class TM, class T> static std::true_type  check(TM<T>);
        template <template <class> class TM>          static std::false_type check(...);
        template <template <int>   class TM, int N>   static std::true_type  check(TM<N>);
        template <template <int>   class TM>          static std::false_type check(...);
    };
    #define is_kind_of(TM, ...) decltype(is_kind_of_::check<TM>(std::declval<__VA_ARGS__>()))

    经过测试,确实是有效的,但是只是在gcc(我用的是5.2.0版本)编译器下有效,
    但在VS2015下编译是不能通过的,VS2015虽然几乎支持了所有C++11的特性,但还有两三个特性没有支持,这其中就包括”表达式 SFINAE”,上面这个方法在VS2015下编译报错大概就是载在这个坑里了。

    所以要想在VS2015下实现这个功能还得别想办法,于是参照上面的方法我把代码做了修改:

    /* 模板函数,检查T是否为memory_cl的子类 */
    template<typename T>
    struct is_kind_of_memory_cl{
        template <typename CL_TYPE>
            static CL_TYPE  check(memory_cl<CL_TYPE>);
        static void check(...);
        using cl_type=decltype(check(std::declval<T>()));// T实例化memory_cl时的模板参数类型
        enum{value=!std::is_same<cl_type,void>::value};
    };

    问题解决。


    关于VS2015对C++11的支持情况,参见微软的官方文档《支持 C++11/14/17 功能(现代 C++)》

    展开全文
  • 1.如何渲染模板 *模板放在'templates'文件夹下 *在'flask'中导入'render_template' *在视频函数中,用'render_template' 函数,渲染模板,注意:只要填写模板的名字,不需要填写模板的名字,不需要填写...

    ***Flask渲染Jinja2模板和传参:

     

    1.如何渲染模板

    *模板放在'templates'文件夹下

    *在'flask'中导入'render_template'

    *在视频函数中,用'render_template'

    函数,渲染模板,注意:只要填写模板的名字,不需要填写模板的名字,不需要填写‘templates’这个文件夹的路径。

     

    2.模板传参:

    *如果只有一个或者少量参数,直接在'render_template'函数中添加关键字参数就可以了。

    *如果有多个参数的时候,那么可以先把所有的参数放在字典中,然后在‘render_template’,使用两个星号,把字典转换成关键参数传进去,这样的代码更方便管理和使用

     

    3.在模板中,如果要使用一个变量,语法是:'{{params}}'

     

    4.访问模型中的属性或者是字典,可以通过'{{params.property}}'的形式,或者使用{{params['propety']}}

     

    ****if判断 ****

    1.语法:

    {% if xxx%}
    
    {%else%}
    
    {{%endif%}}
    
    

    2.if的使用,可以和python中相差无几。

     

    ***for循环***

    1.字典的遍历,语法和'python'一样,可以使用items(), keys(),values(),iteritems(),iterkeys(),itervalues();

    {%for k,v in context.items()%}
    
    <p>{{k}}:{{v}}</p>
    
    {%endfor%}

    2.列表的遍历

    {% for lie in liebiao%}
    
    {{lie}}
    
    {%endfor%}

     

    ****过滤器****

    1.介绍和语法:

    *介绍:过滤器可以处理变量,把原始的变量经过处理后再展示出来。作用的对象是变量。

    *语法:

    ......

    {{avatar|default('xxx')}}

    ...

    2.default过滤器:如果当前变量不存在,这时候可以 指定默认值 。

    3.length过滤器:求列表或者字符串或者字典或者元组的长度。

     

    .常用的过滤器:

    abs(value):返回一个数值的绝对值。示例:-1|abs

    default(value,default_value,boolean=false):如果当前变量没有值,则会使用参数中的值来代替。示例:name|default(‘xiaotuo’)——如果name不存在,则会使用xiaotuo来替代。boolean=False默认是在只有这个变量为undefined的时候才会使用default中的值,如果想使用python的形式判断是否为false,则可以传递boolean=true。也可以使用or来替换。

    escape(value)或e:转义字符,会将<、>等符号转义成HTML中的符号。显例:content|escape或content|e。

    first(value):返回一个序列的第一个元素。示例:names|first

    format(value,arags,*kwargs):格式化字符串。比如:{{ "%s" - "%s"|format('Hello?',"Foo!") }}将输出:Helloo? - Foo!

    last(value):返回一个序列的最后一个元素。示例:names|last。

    length(value):返回一个序列或者字典的长度。示例:names|length。

    join(value,d=u”):将一个序列用d这个参数的值拼接成字符串。

    safe(value):如果开启了全局转义,那么safe过滤器会将变量关掉转义。示例:content_html|safe。

    int(value):将值转换为int类型。

    float(value):将值转换为float类型。

    lower(value):将字符串转换为小写。

    upper(value):将字符串转换为小写。

    replace(value,old,new): 替换将old替换为new的字符串。

    truncate(value,length=255,killwords=False):截取length长度的字符串。

    striptags(value):删除字符串中所有的HTML标签,如果出现多个空格,将替换成一个空格。

    trim:截取字符串前面和后面的空白字符。

    string(value):将变量转换成字符串。

    wordcount(s):计算一个长字符串中单词的个数

     

    ***继承和block***

    1.继承作用和语法

    *作用:可以把一些公共的代码放在父模板中,避免每个模板写同样的代码

     

    2.block实现:

    *作用:可以让子模板实现一些自己的需求,父模板需要提前定义好。

    *注意点:子模板中的代码,必须写在block块中。

     

    ***URL链接:

    使用url_for(视图函数名称)可以反转成url.

     

    ***加载静态文件:

    1.语法:

    2.静态文件:

    3.静态文件都放在static下

    (1)加载css

    <link ref="stylesheet" href="{{url_for('static',filename='css/index.css')}}"></link>

    (2)加载js

    <script src="{{url_for('static',filename='js/xxx.js')}}"></script>

    (3)加载图片文件

    <img src="{{url_for('static',filename='img/xxx.png')}}" alt="">

     

    展开全文
  • 模板--判断两线段是否相交

    千次阅读 2016-04-16 16:16:10
    题目链接: POJ 1127 Jack Straws 题意: 已知n条木棍的起点和终点坐标,问第i条木棍和第j条木棍是否相连?当两条木棍之间有公共点时,就认为他们时相连的。通过相连的木棍 ... 如何判断两条线段是否相交

    题目链接:
    POJ 1127 Jack Straws
    题意:
    已知n条木棍的起点和终点坐标,问第i条木棍和第j条木棍是否相连?当两条木棍之间有公共点时,就认为他们时相连的。通过相连的木棍
    间接的连在一起的两根木棍也认为时相连的。
    分析:

    木棍就是二维平面上的线段,只要能判断线段是否相交,那么建图后可以通过Floyd算法或者并查集进行连接性判断

    如何判断两条线段是否相交呢?首先会想到计算两条直线的交点,然后判断焦点是否在线段上。那么两条直线的交点如何求得呢?虽然可以把直线表示成方程,通过建立方程组求解。但在几何问题中,运用向量的内积和外积进行计算是非常方便的。
    对于二维向量p1=(x1,y1)p2=(x2,y2),我们定义

    内积p1p2=x1x2+y1y2
    外积p1Xp2=x1y2x2y1.

    要判断点q是否在线段p1p2上,只要
    先利用外积根据是否有
    (p1q)X(p2q)==0来判断点q是否在直线p1p2上,
    再利用内积根据是否有
    (p1q)(p2q)<=0来判断点q是否落在p1p2之间。

    而要求两直线的交点,通过变量t将直线p1p2p1+t(p2p1)线q1q2,所以有:
    (q2-q1)X(p1+(p2-p1)-q1)==0
    于是可以利用下式求得t的值:
    p1+(p2-p1)*((q2-q1)X(q1-p1)/(q2-q1)X(p2-p1)).

    但是使用这个方法还要注意边界情况。也就是平行的线段也可能有公共点。这是我们可以选择通过检查端点是否在另一条线段上来判断。

    以上摘自《挑战程序设计竞赛》

    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <cmath>
    #include <iostream>
    #include <climits>
    #include <string>
    using namespace std;
    double EPS=1e-10; 
    const int MAX_N=20;
    
    int n;
    bool connected[MAX_N][MAX_N];
    int pre[MAX_N]; 
    
    
    //考虑误差的加法运算
    double add(double a,double b)
    {
        if(abs(a+b)<EPS*(abs(a)+abs(b))) return 0;
        return a+b;
    }
    
    struct Point {
        double x,y;
        Point() {}
        Point(double x,double y):x(x),y(y){
        }
        Point operator + (const Point& rhs) const {
            return Point(add(x,rhs.x),add(y,rhs.y));
        }
        Point operator - (const Point& rhs) const {
            return Point(add(x,-rhs.x),add(y,-rhs.y));
        }
        Point operator * (const double d) const {
            return Point(x*d,y*d);
        }
        double dot(const Point& rhs) const { //内积
            return add(x*rhs.x,y*rhs.y);
        }
        double cross(const Point& rhs) const { //外积
            return add(x*rhs.y,-y*rhs.x);
        }
    }st[MAX_N],ed[MAX_N];//st[i],ed[i]分别是第i条线段的起点和终点
    
    //判断点q是否在线段p1-p2上
    bool on_seg(Point p1,Point p2,Point q)
    {
        return (p1-q).cross(p2-q)==0&&(p1-q).dot(p2-q)<=0;
    }
    
    //计算直线p1-p2与直线q1-q2的交点
    Point intersection(Point p1,Point p2,Point q1,Point q2)
    {
        return p1+(p2-p1)*((q2-q1).cross(q1-p1)/(q2-q1).cross(p2-p1));
    }
    
    //Floyd_Warshall算法判断任意两条木棍是否相连
    void Floyd_Warshall()
    {
        for(int k=0;k<n;k++){
            for(int i=0;i<n;i++){
                for(int j=0;j<n;j++){
                    connected[i][j] |= connected[i][k]&&connected[k][j];
                }
            }
        }   
    }
    
    int find(int x)
    {
        return pre[x]==x?x:pre[x]=find(pre[x]);
    }
    
    //并查集判断任意两条木棍是否相连
    void UnionFindSet()
    {
        for(int i=0;i<n;i++) pre[i]=i;
        for(int i=0;i<n;i++){
            for(int j=i+1;j<n;j++){
                if(connected[i][j]&&find(i)!=find(j)){
                    pre[j]=i;
                }
            }
        }
    }
    
    void solve()
    {
        for(int i=0;i<n;i++){
            connected[i][i]=true;
            for(int j=0;j<i;j++){//判断木棍i和j是否有公共点
                if((st[i]-ed[i]).cross(st[j]-ed[j])==0){//木棍平行时
                    connected[i][j]=connected[j][i]=on_seg(st[i],ed[i],st[j])
                                                || on_seg(st[i],ed[i],ed[j])
                                                || on_seg(st[j],ed[j],st[i])
                                                || on_seg(st[j],ed[j],ed[i]);
                } else {// 不平行时
                    Point inter=intersection(st[i],ed[i],st[j],ed[j]);
                    connected[i][j]=connected[j][i]=on_seg(st[i],ed[i],inter)&&on_seg(st[j],ed[j],inter);
                }
            }   
        }
        Floyd_Warshall();
        UnionFindSet(); 
    }
    
    int main()
    {
        while(~scanf("%d",&n)&&n){
            for(int i=0;i<n;i++){
                scanf("%lf%lf%lf%lf",&st[i].x,&st[i].y,&ed[i].x,&ed[i].y);
            }
            solve();
            int a,b;
            while(~scanf("%d%d",&a,&b)&&(a||b)){
                //if(connected[a-1][b-1]) printf("CONNECTED\n");
                if(find(a-1)==find(b-1)) printf("CONNECTED\n");
                else printf("NOT CONNECTED\n");
            }
        }
        return 0;
    }
    展开全文
  • 它是队列优化的Bellman-Ford算法。... 贴一个非常清晰的SPFA算法讲解:链接,很遗憾这个讲解没有说如何判断负环是否存在,我补充一下负环的判断方法。  第一种:  在算法更新完状态数组后,再遍历...

      它是队列优化的Bellman-Ford算法。

      优化的原理是:下一次松弛操作时被更新dis的点其实与上一次被更新的点有关!如果上一次被更新的点有一条边指向某点V,那么在下一次,点V就是可能被更新dis的点。

      贴一个非常清晰的SPFA算法讲解:链接 ,很遗憾这个讲解没有说如何判断负环是否存在,我补充一下负环的判断方法。

      第一种:

        在算法更新完状态数组后,再遍历边集,如果存在边还能被松弛的情况,则说明存在负环。

      第二种:

        如果一个点在被入队次数大于 n 次,那么说明存在负环。原理是虽然一个点在状态数组会被多次更新,但是它的更新次数不会大于n-1次,因为从一个点到另一个点最多经过 n-1 条边!如果存在负环则会造成无限入队的情况,spfa算法陷入死循环,这时候就可直接退出了。

     

    C++代码如下:  

    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<string>
    #include<set>
    #include<queue>
    using namespace std;
    #define INF 0x3f3f3f3f
    #define M(a, b) memset(a, b, sizeof(a))
    const int maxn = 1000 + 5;
    
    struct Edge {
        int from, to, dist;
    };
    
    struct SPFA {
        int d[maxn], cnt[maxn], p[maxn];
        int n, m;
        bool inq[maxn];
        vector<int> G[maxn];
        vector<Edge> edges;
    
        void init(int n) {
            this->n = n;
            for (int i = 1; i <= n; ++i) G[i].clear();
            edges.clear();
        }
    
        void AddEdge(int from, int to, int dist) {
            edges.push_back(Edge{from, to, dist});
            int m = edges.size();
            G[from].push_back(m-1);
        }
    
        bool spfa(int s) {
            M(d, INF); M(cnt, 0); M(inq, 0);
            d[s] = 0;
            queue<int> q;
            q.push(s);
            inq[s] = true;
            while (!q.empty()) {
                int u = q.front(); q.pop();
                inq[u] = false;
                for (int i = 0; i < G[u].size(); ++i) {
                    Edge &e = edges[G[u][i]];
                    if (d[e.to] > d[u] + e.dist) {
                        d[e.to] = d[u] + e.dist;
                        p[e.to] = G[u][i];
                        if (!inq[e.to]) {
                            q.push(e.to); inq[e.to] = true; 
                            if (++cnt[e.to] > n) return false;
                        }
                    }
                }
            }
            return true;
        }
    
    };
    
    SPFA solver;
    
    int main() {
        int n, m, a, b, c;
        while(cin >> m >> n) {
            solver.init(n);
            while(m--) {
                cin >> a >> b >> c;
                solver.AddEdge(a, b, c);
                solver.AddEdge(b, a, c);
            }
            solver.spfa(1);
            cout << solver.d[n] << endl;
        }
        return 0;
    }

     

    转载于:https://www.cnblogs.com/Bw98blogs/p/8449076.html

    展开全文
  • 前嗅ForeSpider教程:链接抽取

    千次阅读 2019-02-22 05:46:31
    今天,小编为大家带来的是:在前嗅ForeSpider采集过程中,链接抽取操作中的一系列知识点,主要内容有:如何关联模板,如何判断模板关联是否正确,选择链接类型以及过滤的三种方式。具体内容如下: 一,如何关联模板 ...
  • 原型和原型

    2018-09-04 16:36:46
    如何判断一个变量是数组类型 写一个原型继承的例子 描述new一个对象的过程 zepto(或者其他框架)源码中如何使用原型 构造函数 Foo,F是大写的,构造函数首字母大写。所有的引用类型都有构造函数,构造...
  • dfs模板 数独游戏

    2019-08-09 10:57:57
    dfs的搜索,要注意判断条件,如何判断我没有想到,看了别人的做法才知道,还是太弱啊。 题不难,但是这是个有趣的问题,借助计算机和dfs,轻松成为数独高手。 #include<stdio.h> #include<algorithm>...
  • 如何添加判断? 让视图函数在渲染页面的时候,自报页面名称 模板判断页面名称,来决定是否给加亮的样式 模板的操作 用户中心的父模板 操作前代码 首先让链接写活 》完成可测试一下效果 》关于选中状态 哪个被...
  • 如何准确判断一个变量是数组类型 写一个原型继承的例子 描述new一个对象的过程 zepto(或其他框架)源码中如何使用原型 1 构造函数 构造函数首字母大写 构造函数类似于模板 new一个构造函数,返回一个对象的...
  • 本书以实践为导向,通过大量的模板向读者展示了如何使用模板进行编程以及如何编写自定义模板。除此之外,本书还总结了各种常用的模板编程技巧、C++11新标准中的模板新特性和新语法,以及C++11中新增的其他语言特性。...
  • 模板题目(更新ing)

    2019-03-08 12:29:15
    并查集: Poj-1182 食物 ...// 同类/不同类时,如何判断关系是否矛盾以及如何合并两顶点所在的集合。 #include&amp;amp;amp;amp;amp;amp;amp;amp;lt;iostream&amp;amp;amp;amp;amp;
  • 这个又和装饰模式很像,和装饰模式的区别是,职责模式在跳转的时候,是不执行相关逻辑的,只执行判断条件类的代码,只执行自己职责内的代码。 目录 目录 1. 意图: 2. 如何使用: 3. UML模板: 4. 关键...
  • 题目链接题意:给出一个n个点m条边的无向图,求其割点。思路:tarjan求割点模板题。...那么如何判断一个点是否是割点?一个点v有两种情况。v为树根,则当v有不止一棵子树时,v为割点。v非根节点,则当v的子树...
  • 开发软件1、前台1.1首页1.2用户注册/登录1.3书籍查询1.3.1根据类别查询1.3.2全文索引1.4购物车1.5订单管理1.5.1订单新增1.5.2订单查询1.5.3撤单1.5.4签收2、后台2.1管理员登录(同界面判断权限)2.2书籍类别管理2.3...
  • 学长的训诫C++

    2016-02-25 23:22:32
    1.用模板实现一个栈 2.编译c++有几步 涉及的模板的高级用法 3.实现一个智能指针 4.内存池 对象池 线程池的实现 5.如何加快C++链接速度 ...6.如何判断一个点在一个凸边形 7.more and more 8.刚一波
  • Visual C++编程技巧精选500例.pdf

    热门讨论 2012-09-01 15:01:50
    116 如何判断程序窗口是否为切分窗口? 117 如何创建非矩形窗口? 118 如何实现无标题窗口的拖动? 119 如何将应用程序窗口居中显示? 049 如何禁止标题栏的最小化按钮?… 050 如何禁止标题栏的最大化按钮? 051 如何禁止...
  • 暂时用笔记

    2019-07-12 11:42:00
    目录 ... 无向图如何判断一个点c是否在某两点u,v间的最短路上? 三分法模板 倍增求LCA 线段树5种操作模板 以下模板只是暂时记录一下下,以后会更新学习笔记 树剖 void dfs1(int n,int F) { ...
  • C++函数传参时struct/class应该传引用还是传值?一、什么是PoD数据类型?二、怎么判断一个struct/...C++11中可以通过类模板进行判断,其新特性is_trivial可以用于判断一个struct/class是否为PoD类型。 定义如下: tem
  • 目录 前期工作一、章节问题二、 插入表格table三、 插入图figure四、插入公式五、插入文献六、编译七、如何判断运行成功八、找运行错误九、提醒一点 前期工作 首先准备工作做好。 *我们上网下载LaTeX论文模板。 链接...
  • 原文:点击打开链接我们知道织梦DedeCMS文章内容发布的时候可以选择“头条”... 这个标签主要是通过对flag字段进行判断,如果flag属性里面包含有推荐属性,就显示推荐的字样,在列表页模板里面的标签如下: 判断推...
  • 洛谷【P2865】[USACO06NOV]路障Roadblocks ...如何判断,是本题的重点。 我们可以枚举每一个点分别到 1 和 n 的最短路之和,对所有点求一个次小值(最小值就是最短路),就是次短路,即:dis1[...
  • 学习了插件的实现方式,即是如何传递执行。 还了解了插件如何跳过执行。 一种是“显式” Skip,通过调用插件的 skip 方法判断,这种类型插件一般是协议相关的插件,通过在 skip 方法中匹配协议是否符合。 一种是...

空空如也

空空如也

1 2 3 4 5
收藏数 91
精华内容 36
关键字:

如何判断模板链