const

C++ Set & MultiSet

倾然丶 夕夏残阳落幕 提交于 2020-03-21 23:50:26
转自 http://www.cppblog.com/wanghaiguang/archive/2012/06/05/177627.html STL Set介绍 集合(Set)是一种包含已排序对象的关联容器。多元集合(MultiSets)和集合(Sets)相像,只不过支持重复对象,其用法与set基本相同。 Set 又称集合,实际上就是一组元素的集合,但其中所包含的元素的值是唯一的,且是按一定顺序排列的,集合中的每个元素被称作集合中的实例。因为其内部是通过链表的方式来组织,所以在插入的时候比vector 快,但在查找和末尾添加上比vector 慢。 multiset 是多重集合,其实现方式和set 是相似的,只是它不要求集合中的元素是唯一的,也就是说集合中的同一个元素可以出现多次。 构造: explicit set(const Compare&=compare()); 如:set<int,less<int> > set1; less<int>是一个标准类,用于形成升序排列函数对象。降序排列是用greater<int>。 Template<class InputIterator> set(InputIterator, InputIterator,\ const Compare&=compare()); 如:set<int ,less<int> >set2(vector1.begin()

数据流监控可视化1树状结构

耗尽温柔 提交于 2020-03-21 22:05:14
这里的数据流指数据从前端流向后端的过程中途径的所有组件或者说服务,比如用户的http请求先到Nginx, 再到后端服务1, 再到发现服务,再到缓存服务,再到后端服务2, 然后是数据库,以及其他调用,总的来说就是一个请求进入的路径,如果将这样的一个过程可视化出来,我想是不错的,而这样的一个可视化也就可以做成一个监控的可视化,监控测试的连接是否可以完成的完成相应以及发现那个组件出现了问题。 而这里的前端后端并不局限于开发中的前端后端,只有有数据流动的地方就是数据流,比如不同物理机与交换机,路由器之间的网络流动,或者容器之间的数据流动,总的来说所有的数据总会有一个流动的方法,如果可以通过一定的技术获取每个节点的标志,那么就可以将这条路径动态的可视化出来。 演示效果 技术架构 这里选择JavaScript和SVG, 之所以选择SVG是因为D3以及有对应的layout了,所以可以很方便的将数据进行树状的可视化。 D3.js 数据 这里假设我们要监控的数据流架构如下 |---> backend11 |---> nginx1 ---> backend1 ---> | | |---> backend12 client --> | | |---> backend21 |---> nginx2 ---> backend2 ---> | |---> backend22 那么我们可以用下面两种方式来表示

ES6 let和count

有些话、适合烂在心里 提交于 2020-03-21 20:02:57
1、let命令用法:   a、let用来声明变量,类似var,但用let声明的变量,只能在其代码块中引用,相当于私有变量,不会被外界所获取:     function fn(){       let a = 1       console.log(a) 这里可以直接调用     }     console.log(a) 在函数外面访问输出就会报错     以后在for循环中比较适合用let:      var a = [ ] ;      for ( var i = 0 ; i < 10 ; i ++ )        a [i ] = function ( );         console . log (i )       }      }    a[6]();这里会输出10     用var声明的i相当于全局变量,在全局范围内都有效,所以全局只有一个变量 i 。每一次循环,变量 i 的值都会发生改变,而循环内被赋给数组 a 的函数内部的 console.log(i) ,里面的 i 指向的就是全局的 i 。也就是说,所有数组 a 的成员里面的 i ,指向的都是同一个 i ,导致运行时输出的是最后一轮的 i 的值,也就是10。     把var换成let,最后输出的结果就是6     还有在fou循环中,设置循环的部分是父作用域,在循环体内是子作用域:     for (

qt中的 connect 函数

一个人想着一个人 提交于 2020-03-21 12:04:47
1、connect()函数实现的是信号与槽的关联。 注意:只有QO bject类及其派生的类才能使用信号和槽的机制 2、函数原型 static QMetaObject::Connection connect(const QObject *sender, const char *signal,const QObject *receiver, const char *member, Qt::ConnectionType = Qt::AutoConnection); static QMetaObject::Connection connect(const QObject *sender, const QMetaMethod &signal,const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type = Qt::AutoConnection); inline QMetaObject::Connection connect(const QObject *sender, const char *signal,const char *member, Qt::ConnectionType type = Qt::AutoConnection) const; 在第一个函数中:第一个参数为发射信号的对象

通过两个点的经纬度计算距离

巧了我就是萌 提交于 2020-03-21 10:23:10
通过两个点的经纬度计算距离 从google maps的脚本里扒了段代码,没准啥时会用上。大家一块看看是怎么算的。 private const double EARTH_RADIUS = 6378.137; private static double rad(double d) { return d * Math.PI / 180.0; } public static double GetDistance(double lat1, double lng1, double lat2, double lng2) { double radLat1 = rad(lat1); double radLat2 = rad(lat2); double a = radLat1 - radLat2; double b = rad(lng1) - rad(lng2); double s = 2 * Math.Asin(Math.Sqrt(Math.Pow(Math.Sin(a/2),2) + Math.Cos(radLat1)*Math.Cos(radLat2)*Math.Pow(Math.Sin(b/2),2))); s = s * EARTH_RADIUS; s = Math.Round(s * 10000) / 10000; return s; } 从google maps的脚本里扒了段代码

不得不知的ES6十大特性

余生长醉 提交于 2020-03-21 07:34:24
ES6(ECMAScript2015)的出现,无疑给前端开发人员带来了新的惊喜,它包含了一些很棒的新特性,可以更加方便的实现很多复杂的操作,提高开发人员的效率。 本文主要针对ES6做一个简要介绍。 主要译自: http://webapplog.com/ES6/comment-page-1/ 。也许你还不知道ES6是什么, 实际上, 它是一种新的javascript规范。在这个大家都很忙碌的时代,如果你想对ES6有一个快速的了解,那么请继续往下读,去了解当今最流行的编程语言JavaScript最新一代的十大特性。 以下是ES6排名前十的最佳特性列表(排名不分先后): Default Parameters(默认参数) in ES6 Template Literals (模板文本)in ES6 Multi-line Strings (多行字符串)in ES6 Destructuring Assignment (解构赋值)in ES6 Enhanced Object Literals (增强的对象文本)in ES6 Arrow Functions (箭头函数)in ES6 Promises in ES6 Block-Scoped Constructs Let and Const(块作用域构造Let and Const) Classes(类) in ES6 Modules(模块) in

爬虫黑科技,我是怎么爬取indeed的职位数据的

二次信任 提交于 2020-03-21 07:00:29
最近在学习nodejs爬虫技术,学了request模块,所以想着写一个自己的爬虫项目,研究了半天,最后选定indeed作为目标网站,通过爬取indeed的职位数据,然后开发一个自己的职位搜索引擎,目前已经上线了,虽然功能还是比较简单,但还是贴一下网址 job search engine ,证明一下这个爬虫项目是有用的。下面就来讲讲整个爬虫的思路。 确定入口页面 众所周知,爬虫是需要入口页面的,通过入口页面,不断的爬取链接,最后爬取完整个网站。在这个第一步的时候,就遇到了困难,一般来说都是选取首页和列表页作为入口页面的,但是indeed的列表页面做了限制,不能爬取完整的列表,顶多只能抓取前100页,但是这没有难倒我,我发现indeed有一个 Browse Jobs 页面,通过这个页面,可以获取indeed按地区搜索和按类型搜索的所有列表。下面贴一下这个页面的解析代码。 start: async (page) => { const host = URL.parse(page.url).hostname; const tasks = []; try { const $ = cheerio.load(iconv.decode(page.con, 'utf-8'), { decodeEntities: false }); $('#states > tbody > tr > td > a')

AtCoder Grand Contest 005题解

谁都会走 提交于 2020-03-21 04:53:50
传送门 \(A\) 咕咕 const int N=5e5+5; char s[N];int res,n,sum; int main(){ scanf("%s",s+1),res=n=strlen(s+1); fp(i,1,n)if(s[i]=='S')++sum; else if(sum)--sum,res-=2; printf("%d\n",res); return 0; } \(B\) 咕咕 //quming #include<bits/stdc++.h> #define R register #define fp(i,a,b) for(R int i=(a),I=(b)+1;i<I;++i) #define fd(i,a,b) for(R int i=(a),I=(b)-1;i>I;--i) #define go(u) for(int i=head[u],v=e[i].v;i;i=e[i].nx,v=e[i].v) template<class T>inline bool cmin(T&a,const T&b){return a>b?a=b,1:0;} template<class T>inline bool cmax(T&a,const T&b){return a<b?a=b,1:0;} using namespace std; typedef long long ll;

树上子链(树的直径)

女生的网名这么多〃 提交于 2020-03-21 02:57:16
链接: https://ac.nowcoder.com/acm/contest/4462/B 来源:牛客网 题目描述 给定一棵树 T ,树 T 上每个点都有一个权值。 定义一颗树的子链的大小为:这个子链上所有结点的权值和 。 请在树 T 中找出一条最大的子链并输出。 输入描述: 第一行输入一个 n,1≤n≤10 5 。 接下来一行包含n个数,对于每个数 ai,−10 5 ≤ai≤10 5 ,表示 i 结点的权值。 接下来有n-1行,每一行包含两个数u,v( 1≤u,v≤n , u != v),表示u与v之间有一条边。 输出描述: 仅包含一个数,表示我们所需要的答案。 输入 5 2 -1 -1 -2 3 1 2 2 3 2 4 2 5 输出 4 说明 样例中最大子链为1 -> 2 -> 5 备注: 一个结点,也可以称作一条链 最开始写的有点麻烦(可忽略): 1 #include <stdio.h> 2 #include <string.h> 3 #include <iostream> 4 #include <string> 5 #include <math.h> 6 #include <algorithm> 7 #include <vector> 8 #include <stack> 9 #include <queue> 10 #include <set> 11 #include

1001. Elements and MyVector 2016 4 8

时间秒杀一切 提交于 2020-03-21 01:43:27
#include<iostream> #include<string> using namespace std; class Elements{ private: int value; static int numberOfObjects; public: Elements(); Elements(const int &value);//set value Elements(const Elements &elem); ~Elements();//descructor Elements & operator=(const Elements &elem);//assignment Elements & operator=(const int &value);//assignment friend istream& operator>>(istream& is, Elements & elem); //input one integer, and set the value friend ostream& operator<<(ostream& os, const Elements & elem); //output one integer to ostream void setValue(const int &value); //set value int getValue(