c++

我写了套框架,把滑动窗口算法变成了默写题

狂风中的少年 提交于 2021-02-20 16:22:51
作者:labuladong 公众号:labuladong 若已授权白名单也必须保留以上来源信息 我有预感本文要火,所以先罗列一下我们号的所有算法套路集锦文章: 数据结构和算法学习指南 动态规划框架套路详解 回溯算法框架套路详解 BFS算法框架套路详解 二分搜索框架套路详解 双指针技巧套路汇总 滑动窗口框架套路详解(本文) 目前来说,以上几篇文章属于我们的镇号之宝,一直被其他人模仿,然而从未被超越。🤔 言归正传,鉴于前文 我作了首诗,保你闭着眼睛也能写对二分查找 的那首《二分搜索升天词》很受好评,并在民间广为流传,成为安睡助眠的一剂良方,今天在滑动窗口算法框架中,我再次编写一首小诗来歌颂滑动窗口算法的伟大: 关于双指针的快慢指针和左右指针的用法,可以参见前文 双指针技巧汇总 , 本文就解决一类最难掌握的双指针技巧:滑动窗口技巧,并总结出一套框架,可以保你闭着眼直接套出答案。 说起滑动窗口算法,很多读者都会头疼。这个算法技巧的思路非常简单,就是维护一个窗口,不断滑动,然后更新答案么。LeetCode 上有起码 10 道运用滑动窗口算法的题目,难度都是中等和困难。该算法的大致逻辑如下: int left = 0 , right = 0 ; while (right < s.size()) { // 增大窗口 window.add(s[right]); right++; while

C++动态内存管理

丶灬走出姿态 提交于 2021-02-20 14:51:51
1.内存划分 程序运行以后,内存划分的区域 —— (1)内核空间: 放置操作系统相关代码和数据,用户不能直接进行操作,必须通过系统调用函数。 (2)栈区: 存放函数,寄存器中开辟的变量,包括函数参数,返回值。 (3)内存映射段: 存放文件映射,库,匿名映射等。 (4)堆区: 存放动态开辟的变量,如malloc,new等。 (5)数据段(分为全局变量区和静态区): 存放全局变量以及static修饰的变量。 (6)代码段: 程序中的代码以及常量。 为什么要进行分区 ——方便数据的管理。 2.C语言中的动态内存管理函数 malloc ——void* malloc(size_t size),size:要申请空间的字节数。 calloc ——void* calloc(size_t n,size_t size),n:要设置的元素个数,size:每个元素大小。calloc会对申请的内存进行初始化。 realloc ——void* realloc( void *mem_address, size_t newsize ),将mem_address的内存空间改为newsize,如果mem_address为空,则跟malloc使用大致相同,如果newsize比旧的空间要小,则原地减小空间,指针指向不变。如果newsize比oldsize大一点,则看该内存空间末尾后有没有可用的空间,如果有,则使用

深度学习环境搭建:window10+CUDA10.0+CUDNN+pytorch1.2.0

情到浓时终转凉″ 提交于 2021-02-20 13:37:45
去年底入手一台联想Y7000P,配置了Nvidia GeForce GTX 1660 Ti GPU,GPU内存6G,但是因为有GPU服务器,所以一直没有在这台笔记本上跑过模型,如今经过一番折腾,终于在此笔记本上搭建好了环境,并成功使用GPU训练了一些模型,本篇记录了环境搭建的过程。 检查你的GPU 首先确保你的电脑有Nvidia的GPU,并且支持CUDA,可以参考 这个网址 。 安装vs2017 Visual Studio 2017 Community下载地址 安装选项:勾选“C++的桌面开发”,右边的列表再额外勾选一个SDK,这个SDK是在后续测试CUDA样例的时候要用到的,如下图: 安装CUDA10.0 下载 打开网站: CUDA10.0 按照下图选择对应的选项后,点击下载: 安装 双击下载的文件,选择自定义安装,如果之前你已经安装过显卡驱动并且兼容CUDA10.0,可以在这里去掉显卡驱动的勾选,兼容情况参考 这里 ,截图如下: 另外,去掉Visual studio integration的勾选: 后面默认选择下一步,等待安装完成。 测试 命令行测试: nvcc -V 输出以下信息即成功: 样例测试: 以管理员方式打开vs2017,然后加载bandwidthTest解决方案,路径如下: C:\ProgramData\NVIDIA Corporation\CUDA Samples

掌握这些,ArrayList就不用再学了(上)

北城以北 提交于 2021-02-20 11:47:30
ps: 一不小心又写万把字了,没办法,怕你们看不下去,分成了上下两部分! 关于ArrayList的学习 ArrayList属于Java基础知识,面试中会经常问到,所以作为一个Java从业者,它是你不得不掌握的一个知识点。😎 可能很多人也不知道自己学过多少遍ArrayList,以及看过多少相关的文章了,但是大部分人都是当时觉得自己会了,过不了多久又忘了,真的到了面试的时候,自己回答的支支吾吾,自己都不满意😥 为什么会这样?对于ArrayList这样的知识点的学习,不要靠死记硬背,你要做的是真的理解它!😁 我这里建议,如果你真的想清楚的理解ArrayList的话,可以从它的构造函数开始,一步步的读源码,最起码你要搞清楚add这个操作,记住,是源码😄 一个问题看看你对ArrayList掌握多少 很多人已经学习过ArrayList了,读过源码的也不少,这里给出一个问题,大家可以看看,以便测试下自己对ArrayLIst是否真的掌握: 请问在ArrayList源码中DEFAULTCAPACITY_EMPTY_ELEMENTDATA和EMPTY_ELEMENTDATA是什么?它们有什么区别? 怎么样?如果你能很轻松的回答上来,那么你掌握的不错,不想再看本篇文章可以直接出门右拐(我也不知道到哪),如果你觉得不是很清楚,那就跟着我继续往下,咱们再来把ArrayList中那些重点过一遍!😎

What is a guard block for a header file in C++?

∥☆過路亽.° 提交于 2021-02-20 11:32:21
问题 I'm trying to make a C++ class using the Code::Blocks IDE and there is a field called "Guard block." I've done a search and haven't been able to find any useful information. What is this field for? Thanks. 回答1: Guard blocks are used to protect against the inclusion of a header file multiple times by the same compilation unit (c++ file). They look something like this: // Foo.h #ifndef INCLUDE_FILE_NAME_HERE_H_ #define INCLUDE_FILE_NAME_HERE_H_ class Foo { }; #endif If you include the same file

玩转3516!修改系统源码!随心所欲去使用自己心爱的字体包!(资源下载)

末鹿安然 提交于 2021-02-20 11:03:55
目录: 1、演示视频 2、字体包、hap、源代码下载 3、具体操作 老规矩先上跑起来的字体效果演示视频: 演示视频 (演示视频中所提到的三种字体包,演示应用的hap,以及演示应用的源代码,下载地址在这里) 然后还是大概说一下故事背景吧:本来已有的API:SetFont已经提供了修改字体的功能,我看着系统这思源黑体难受,想换个别的,起初也以为随便一调就OK了,根据目前所给文档肯定是看不出来了,我就去源码看相关API的用法,发现源码中确实只有SourceHanSansSC-Regular.otf一个字体包。然后我就单纯的以为只是放了一个字体包,整个源码的逻辑应该是通的,我把再找几个包扔进去就可以了。事实证明,我又想错了,但是本着码农的死磕精神我又去尝试了.....最后在捋代码的时候发现整个逻辑整体是通的,就是在增加识别字体包部分写死了,所以改改代码,然后自己心爱的字体包扔到相应目录下,修改Build.gn让其打包编译,然后重新烧写系统,就可以子代码中调用自己扔进去的字体包了 好了,其实以上背景说明其实也基本写完了整个添加字体包的过程。现在具体说一下: 1.下载自己想要的字体包,目前测试结果是我随便找了3个ttf格式的字体包都是可以,目测差不多通用的字体包应该都能用(PS:我下载的三个字体包:沐瑶软笔手写体、包图小白体、王漢宗勘亭流繁。大家可以尽情去附件下载),然后放入源码目录下的

GCC throws init-list-lifetime warning on potentially valid code?

守給你的承諾、 提交于 2021-02-20 10:16:29
问题 I'm running on Debian unstable with GCC 9.3.0. There was a recent change on a project I work on that introduced code similar to what's below. #include <initializer_list> #include <map> #include <vector> std::map<int, std::vector<int>> ex = []{ /* for reused lists */ std::initializer_list<int> module_options; return (decltype(ex)) { {1, module_options = { 1, 2, 3 }}, {2, module_options}, }; }(); The idea is that identical subsections of the initializer lists are first declared at the top,

GCC throws init-list-lifetime warning on potentially valid code?

故事扮演 提交于 2021-02-20 10:15:59
问题 I'm running on Debian unstable with GCC 9.3.0. There was a recent change on a project I work on that introduced code similar to what's below. #include <initializer_list> #include <map> #include <vector> std::map<int, std::vector<int>> ex = []{ /* for reused lists */ std::initializer_list<int> module_options; return (decltype(ex)) { {1, module_options = { 1, 2, 3 }}, {2, module_options}, }; }(); The idea is that identical subsections of the initializer lists are first declared at the top,

GCC throws init-list-lifetime warning on potentially valid code?

倾然丶 夕夏残阳落幕 提交于 2021-02-20 10:15:10
问题 I'm running on Debian unstable with GCC 9.3.0. There was a recent change on a project I work on that introduced code similar to what's below. #include <initializer_list> #include <map> #include <vector> std::map<int, std::vector<int>> ex = []{ /* for reused lists */ std::initializer_list<int> module_options; return (decltype(ex)) { {1, module_options = { 1, 2, 3 }}, {2, module_options}, }; }(); The idea is that identical subsections of the initializer lists are first declared at the top,

Multiple parameter packs — how?

我只是一个虾纸丫 提交于 2021-02-20 10:13:06
问题 I have the following problem: #include <vector> #include <tuple> using namespace std; template< size_t... N_i, typename Ts... > class A { // ... private: std::vector<size_t> _v = { N_i... }; std::tuple<Ts...> _t; }; int main() { A<1> a; } As you can see above, I try to define multiple parameter packs as template arguments of the class A . Unfortunately, the code does not compile: error: expected nested-name-specifier before 'Ts' How can I define multiple parameter packs for this example? 回答1: