const

数组、字符串和指针

感情迁移 提交于 2020-03-21 01:28:33
1.如何使用数组   数组就是一组名为数组元素或简称元素的内存位置,各个内存位置可以存储相同数据类型的数据项,而我们可以用相同的变量名引用所有内存位置。 2.如何声明和初始化不同类型的数组   声明数组:例如 long height[6];   初始化数组:例如 int engine_size[5] = {200, 250, 300, 350, 400};   C++11标准定义了一种表示一组初始值的新的统一方式,对于用这种方式初始化的所有对象,这些初始值都是相同的,包括标准模板库容器和数组。   例如:int value[]{2,3,4}; 有了这种语法,=操作符就是不必要的。 3.如何对数组使用基于范围的for循环   例如: double temperatures[] = {65.5, 68.0, 75.0, 77.5, 76.4, 73.8, 80.1};       double sum = 0.0;       int count = 0;       for(double t : temperatures){         sum += t;         ++count;       }       double average = sum/count;   还可以使用auto关键字来编写该循环:     for(auto temperature :

styled-components的基本使用

匆匆过客 提交于 2020-03-20 23:10:55
一、官网地址   https://www.styled-components.com/ 二、styled-components   1、styled-components 样式化组件,主要作用是它可以编写实际的CSS代码来设计组件样式,也不需要组件和样式之间的映射,即创建后就是一个正常的React 组件,   并且可以附加样式给当前组件。 优化react组件   2、在一个组件内会将结构、样式和逻辑写在一起,虽然这违背了关注点分离的原则,但是这有利于组件间的隔离。为了顺应组件化的潮流   3、使用styled-components不需要再使用className属性来控制样式,而是将样式写成更具语义化的组件的形式   4、使用style-components会随机生成一个class名称,这样不会污染到全局变量,当然因为随机生成,维护会增加难度 三、基本使用   1、安装   cnpm i styled-components -S || yarn add styled-components   2、引入   import styled from "styled-components";   3、使用 export const Header = styled.div` width:100%; height:1rem; background:red `import {Header}

尽可能使用const

我怕爱的太早我们不能终老 提交于 2020-03-20 21:59:13
1、const用于定义常量 编译器可以对其进行静态数据类型检查 2、const可用于修饰形式参数 若你在编写函数时,并没有打算改变参数,这是就应该将参数的类型设置为const reference,这样既可以保证参数的常量性,又提高了传值的效率 3、const修饰返回值 若函数的返回值时const pointer,则返回值不可被直接修改,而且返回值必须赋值给const同种类型 令函数返回一个常量值,该const为顶层const,编译器会直接忽视其作用,但有时会降低因用户的错误而造成的意外 1 class Rational {}; 2 const Rational operator*(const Rational& lhs, const Rational& rhs); 3 4 Rational a, b, c; 5 6 (a * b) = c; //编译错误 7 if ((a * b) = c) //编译错误 4、const成员函数 可以保证该成员函数可以作用于const对象身上 两个成员函数如果只是常量性(constness)不同,可以被重载 bitwise constness   成员函数只有在不更改对象的非静态成员变量时才可以说是const,即不更改对象内的任何一个bit,但是有一种特殊情况,类的数据成员为指针,改变指针所指之物并不会改变对象的常量性,可以通过bitwise

[vue ]滚动视图解决ElementUI NavMenu 导航菜单过长显示的问题

夙愿已清 提交于 2020-03-20 21:58:39
记录一下工作 需求   导航菜单过长的时候会溢出,需要一个像 Tabs 标签页一样的滚动视图容器,可以左右滚动内部视图。 解决方法   由于时间问题,所以直接将 Tabs 源码抽取出来使用。   这里要做一些特殊处理,不允许 NavMenu 导航菜单滚动视图容器内的元素换行。 如: /deep/.el-menu--horizontal>.el-menu-item,.el-menu--horizontal>.el-submenu { float: none !important; display: inline-block !important; } 使用方法如下: <scrollView> <div> // 一些不换行内容 </div> </scrollView> 下面是抽出来的源码,稍稍改造了下,左右箭头做了自适应垂直居中,把 elementui的样式抽取出来以及修改了类名,减少依赖。 scrollView.vue  <script> import { addResizeListener, removeResizeListener } from "element-ui/src/utils/resize-event"; const firstUpperCase = str => { return str.toLowerCase().replace(/( |^)[a-z]/g, L

常见c语言字符串题

丶灬走出姿态 提交于 2020-03-20 18:38:37
字符串是程序员求职笔试中必考题型,很能考查出编程的基础。下文选取了几个常见的考题和大家进行分享。 1、编写函数,实现把一个char组成的字符串循环右移n位。如abcdehi,n=2。则输出hiabcde。 #include "iostream" using namespace std; const int MAX_LEN = 20; void LoopMove(char* cpStr, int iSteps) { //注意,在整个处理过程中,cpStr的最后字符都没有涉及处理 char cTempArray[MAX_LEN]; size_t szStrLength = strlen(cpStr); size_t in = szStrLength -iSteps; memcpy(cTempArray, cpStr + in, iSteps); memcpy(cTempArray + iSteps, cpStr, in); memcpy(cpStr, cTempArray, szStrLength); cTempArray[szStrLength + 1] = '\0'; cout << cTempArray << endl; } int main() { char ctemp[] = "abcdefghi"; LoopMove(ctemp, 2); cout << ctemp <<

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

烂漫一生 提交于 2020-03-20 16:31:09
最近在学习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')

gmapping

拜拜、爱过 提交于 2020-03-20 14:01:26
gmapping 源码:git搜索 gmapping 下面两个即是: gmapping 原理很简单,通过“ l粒子滤波 "实现定位。具体通过粒子与已经产生的地图进行scanMatch,矫正里程计误差实现。 在定位的同时,每次经过map_update_interval_时间,进行地图更新 updateMap(*scan)。相对cartographer,缺少闭环,所以计算量很小,实测,局部地图比carto清晰,质量较好。下面对代码进行梳理(梳理导航相关代码跟着laser走,会比较清晰) ### 代码梳理 1> ros 部分 (代码为简化版,方便梳理 ... 表示有省略代码) gmapping/src/main.cpp int main(int argc, char** argv) { ros::init(argc, argv, "slam_gmapping"); SlamGMapping gn; gn.startLiveSlam(); ros::spin(); return(0); } gmapping/src/slam_gmapping.cpp void SlamGMapping::startLiveSlam() { ... // 订阅激光数据 scan_filter_->registerCallback(boost::bind(&SlamGMapping:

require.context()

孤者浪人 提交于 2020-03-20 12:54:26
3 月,跳不动了?>>> require.context(directory,useSubdirectories,regExp) directory:说明需要检索的目录 useSubdirectories:是否检索子目录 regExp: 匹配文件的正则表达式,一般是文件名 场景:如页面需要导入多个组件,原始写法: import titleCom from '@/components/home/titleCom' import bannerCom from '@/components/home/bannerCom' import cellCom from '@/components/home/cellCom' components: { titleCom, bannerCom, cellCom } 样就写了大量重复的代码,利用 require.context 可以写成 const path = require('path') const files = require.context('@/components/home', false, /\.vue$/) const modules = {} files.keys().forEach(key => { const name = path.basename(key, '.vue') //返回文件名 不含后缀名 modules

[转] 理解 JavaScript 的 async/await

感情迁移 提交于 2020-03-20 11:01:50
随着 Node v7 的发布,越来越多的人开始研究据说是异步编程终级解决方案的 async/await。我第一次看到这组关键字并不是在 JavaScript 语言里,而是在 C# 5.0 的语法中。C# 的 async/await 需要在 .NET Framework 4.5 以上的版本中使用,因此我还很悲伤了一阵——为了要兼容 XP 系统,我们开发的软件不能使用高于 4.0 版本的 .NET Framework。 我之前在 《闲谈异步调用“扁平”化》 中就谈到了这个问题。无论是在 C# 还是 JavaScript 中,async/await 都是非常棒的特性,它们也都是非常甜的语法糖。C# 的 async/await 实现离不开 Task 或 Task<Result> 类,而 JavaScript 的 async/await 实现,也离不开 Promise 。 现在抛开 C# 和 .NET Framework,专心研究下 JavaScript 的 async/await。 async 和 await 在干什么 任意一个名称都是有意义的,先从字面意思来理解。async 是“异步”的简写,而 await 可以认为是 async wait 的简写。所以应该很好理解 async 用于申明一个 function 是异步的,而 await 用于等待一个异步方法执行完成。

《C++ Primer》笔记-引用

半世苍凉 提交于 2020-03-20 09:03:17
引用就是给变量起别名,然后别名和原变量就完全是一回事了,在C++中常用作函数形参,以返回多个值: 如:BOOL initLinkList(&L) 1.不能定义引用类型的引用,但可以定义任何其他类型的引用。 2.引用必须用与该引用同类型的对象初始化: int ival = 1024; int &refVal = ival; // ok: refVal refers to ival int &refVal2; // error: a reference must be initialized int &refVal3 = 10; // error: initializer must be an object 定义多个引用 可以在一个类型定义行中定义多个引用。必须在每个引用标识符前添加 “&”符号: int i = 1024, i2 = 2048; int &r = i, r2 = i2; // r is a reference, r2 is an int inti3=1024,&ri=i3; //definesoneobject,andonereference int &r3 = i3, &r4 = i2; // defines two references const 引用 const 引用是指向 const 对象的引用: const int ival = 1024; const