C++技巧Tips
Vector的resize用法resize()语法:
123vector<int> v;v.resize(n); // 将v的维度更改为n,v原来的元素值不变,新增的值为"int"的默认值(=0)v.resize(n, val); // 将v的维度更改为n,v原来的元素值不变,新增的值为val
resize()函数特点:设原来vector v的长度为m:
如果n>m,则v的前m个元素不变,扩充的部分(n-m)填充元素默认值/默认构造函数或者val。
如果n<=m,则进行裁剪操作,只取v的前n个元素,但是这n个元素保留原来的值,这种情况下val参数不生效。
例1:
12345678910111213141516171819202122232425262728293031#include <iostream>#include <vector>using namespace std;template<class T> // 重载<<以打印vector中的所有元素os ...
C++内存检查工具valgrind入门案例
(更新中……)概述本文通过一些简单案例来介绍如何使用valgrind对C++程序进行内存检测。
valgrind的安装和使用valgrind只能在Linux系统上安装运行,windows用户可以在wsl系统中安装valgrind。具体方法见另一篇文章:C++在windows下安装wsl和c++编译工具。
使用方法:
12345678// 编译时带-g参数以包含debug信息:g++ -g test.cpp -o test.exe// 使用valgrind启动exe文件:(默认参数 --tool=memcheck 可省略)valgrind ./test.exe// 查看所有指令valgrind --help
test.cpp
123456789101112131415161718#include <iostream>#include <string>using namespace std;struct Text{ Text(string in):_data(in){} void print(){ ...
C++在windows下安装wsl和c++编译工具
概述本文介绍如何在windows中使用wsl系统实现Linux开发,并且安装常用的C++工具例如cmake, g++, gdb, valgrind等。
安装步骤<1> 安装wsl子系统:12345678// win+X 打开powershell(管理员)wsl --install // 安装完成后,重启电脑,打开powershell再次运行wsl --install // 输入Linux用户名和密码(自己设定)// apt更新package(重要,否则后面的包安装可能会失败)sudo apt update && sudo apt upgrade
安装完成后,在windows开始菜单中可以看到WSL和Ubuntu系统的程序:(默认Ubuntu,也可以安装其他Linux系统)。可以选择Ubuntu,WSL或者powershell中的任意一个使用Linux系统:
<2> 安装C++相关编译、测试工具:1234567891011// 安装 cmakesudo apt-get install cmake// 安装 C++编译环境如g++, gdb等 ...
C++指针与被指对象的生命周期探讨
概述C++指针与被指对象的生命周期探讨:在使用指针时,一定要保证被指变量的生命周期大于指针的生命周期,否则会导致意外的错误。
指针的图解表示我们知道,变量在内存空间中是由“地址”加“值”进行存储的,特别像我们去超市的存包柜。地址代表变量在内存中的位置(第几号柜门),值代表变量本身的取值(该柜门内存放的物品)。
一级指针:要操作的数据存放在某个变量中,该变量的地址存放在指针变量中,该指针就是一级指针。
二级指针:在上述基础上,将一级指针的地址也存放在另外一个指针中,该指针就是二级指针(“指针的指针”)。
悬挂指针和悬挂引用悬挂指针,是指针指向了已经被释放的内存。造成悬挂指针的原因是被指变量的生命周期先于它的指针结束,但是这时并没有将指针置为空,因此指向了被释放的内存,称为悬挂指针。通过悬挂指针操纵内存的行为是非常危险的、未定义的。解决办法:在被指对象释放时将所有指向它的指针置空,或者使用智能指针。
类似地,如果一个对象的引用的生命周期比该对象本身要长,那么在该对象销毁之后,该引用就成为了“悬挂引用”。悬挂引用同悬挂指针一样,直接访问了被释放的内存,可能会造成非常严重的后果,应该被 ...
前端基础04-三件套案例01-讨厌的广告牌
前端三件套案例01-讨厌的广告牌一个练手小案例,教你在网页中制作一个令人讨厌的卖房广告牌。当你在欣赏优美的古诗时,鼠标不小心滑到左侧,突然弹出的广告牌是否会把你吓一跳呢?
下面是HTML+CSS+JS源代码:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, init ...
前端基础04-三件套案例01-讨厌的广告牌
前端三件套案例01-讨厌的广告牌一个练手小案例,教你在网页中制作一个令人讨厌的卖房广告牌。当你在欣赏优美的古诗时,鼠标不小心滑到左侧,突然弹出的广告牌是否会把你吓一跳呢?
下面是HTML+CSS+JS源代码:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, init ...
前端基础03-JavaScript基本语法
JavaScript基础JavaScript 是 Web 的主流编程语言,可以实现网页与用户的动态交互。所有HTML页面都可以使用JS。
JS的导入方式在HTML中,使用<script>标签来导入JS命令。有两种方式:
内部导入:在HTML中直接使用<script>标签 + 内容。
外部导入:在HTML中使用<script src="xxx.js"></script>导入外部.js文件。
1234567891011121314151617181920<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>js 基础</tit ...
前端基础02-CSS基本语法
CSS基础CSS (Cascading Style Sheets,层叠样式表),是一种用来为结构化文档(如 HTML 文档或 XML 应用)添加样式(字体、间距和颜色等)的计算机语言。
CSS样式三种写法:(优先级:内联 > 内部 > 外部,”就近原则”)在HTML中,通过<style> 标签或属性来指定CSS样式。有三种方式:
内联:将style作为属性内嵌到某个标签中:<h2 style="color: purple; font-size: 28px;">
内部:在<head>中使用<style>标签
外部:使用外部link: <link rel="stylesheet" href="./css/style0.css">
示例 less02_css_basic.html (CSS中的注释为/* 注释 */,而HTML中的注释为 )
1234567891011121314151617181920212223242526272 ...
前端基础01-HTML基本语法
概述本系列笔记为前端入门学习,了解前端HTML+CSS+JS以及node.js等开发工具和框架的基础知识。
准备工作开发环境搭建:VS code + 插件:
HTML CSS Support (CSS编写神器)
Liver Server (实时预览)(安装后在vs code空白处右键=>open/stop with live server即可弹窗出page,编辑完只要ctrl+s就可以自动刷新)
Auto Rename Tag (同步修改标签,头尾绑定一起修改)
快捷操作:
直接输入!, p, h1等命令快速创建标签
shift + alt + down 快速复制当前行
ctrl + / 注释当前行
鼠标放在属性名称上,可以显示其属性的取值及解释
HTML基础HTML(HyperText Markup Language):超文本标记语言。其结构组成元素可以分为三类:(其实是display属性的三个值)
块元素(block):新行开始,独占一行。如div, p, h1~h6, table, ul, ol, li, dl, dd等。 ...
Git结合Visual Studio Code高效团队开发入门教程
概述Git 是一个开源的分布式版本控制系统,用于高效管理任何大小型项目源代码。Visual Studio Code是一款轻量级但是开发功能齐全的代码编辑器,可以通过各种插件的加持变身成为接近IDE的开发工具。本博客是入门教程,向初学者介绍如何结合Git和VS Code这两个强大的工具高效地进行日常团队协作开发。
Git与代码管理
并行开发
Git与VS Code的安装Git的下载与安装:Git (git-scm.com) => 下载 Git-2.45.2-64-bit.exe 双击安装即可。
参考教程:Git 详细安装教程(详解 Git 安装过程的每一个步骤)_git安装-CSDN博客
当在windows文件夹空白处右键菜单中出现 “Git GUI Here”和”Git Bash Here”的字样说明安装成功:
VS code的下载与安装:Download Visual Studio Code - Mac, Linux, Windows 。
参考教程:VSCode安装配置使用教程(最新版超详细保姆级含插件)一文就够了_vscode使用教程-CSDN博客
...