C/C++
文章平均质量分 53
C/C++
木白CPP
工欲善其事,必先利其器
展开
-
C++ 左值右值以及std::move函数解释
比如vector::push_back 等这类函数时,会对参数的对象进行复制,连数据也会复制.这就会造成对象内存的额外创建, 本来原意是想把参数push_back进去就行了,通过std::move,可以避免不必要的拷贝操作。,在C++语言中,二者是有区别的,左值是指表达式可以被取址的值,即表达式返回的是一个可以在内存中存储的位置;std::move 将对象的状态或者所有权从一个对象转移到另一个对象,只是转移,没有内存的搬迁或者内存拷贝所以可以提高利用效率,改善性能;为什么要使用 std::move?原创 2023-07-24 14:03:15 · 272 阅读 · 0 评论 -
CMake 的简单使用
CMake 允许为项目增加编译选项,从而可以根据用户的环境和需求选择最合适的编译方案。例如,可以将 mathlib 库设为一个可选的库。原创 2023-07-06 15:17:25 · 346 阅读 · 0 评论 -
用CMake下的find_package()函数链接库
第一步工作完成了,也就是说libadd的库已经做好了,接下来在任意地方新建一个test文件夹,创建一个main.cpp用于调用libadd。Cmake 会在以下的路径中寻找Config.cmake或Find.cmake文件。再新建一个CMakeLists.txt 文件,我们要在生存可执行文件的同时链接到Add的库。再新建一个FindAdd.cmake文件,用于找到Add的库,需要把头文件和库的地址都给出。接下来把头文件和库安装到一个自定义文件夹中,这边装在install里面。首先我们创建一个文件夹。原创 2023-06-25 16:13:27 · 847 阅读 · 0 评论 -
一篇文章搞懂CMake(gcc、g++、cmake解释)
一篇文章搞懂CMake(gcc、g++、cmake解释)原创 2023-06-05 17:14:35 · 10445 阅读 · 3 评论 -
VsCode终端或者文本乱码问题
在window下用vscode编程出现终端乱码,或者打开从网站上下载的文件注释全是乱码的。这种问题反反复复出现,所以需要从根源上解决问题。首先必须了解,vscode默认编码是UTF-8,我们电脑终端也就是cmd的编码方式是GBK,两者不匹配,所以会乱码。有两种方式可以解决:方法一、把vscode的编码格式改成GBK方法二、 VSCode终端输入命令, 切换代码页使用UTF-8这两种方式完全看个人情况,如果是刚使用vscode,推荐用方法一;如果是自己文件比较多,而且都是用的UTF-8格式编写原创 2022-05-15 10:36:23 · 9325 阅读 · 17 评论 -
OneNote不用NoteHighlight怎么做出好看的代码块
先看看用NoteHighlight和自己做的代码块的对比,上图是NoteHighlight,下图是自己做的,与IDE的代码样式几乎一样由于自己的笔记本电脑一直没NoteHighlight,虽然能在加载项中找到NoteHighlight,但是无法正常使用。期间用了很多方法,我的oneNote是32位的,但是32位和64位的NoteHighlight我都试过了,都不行;office也进行了修复,结果就是实验室的台式电脑可以使用,但是笔记本却不行。直接从vscode上拷贝过来的程序放在oneNote确实不原创 2022-04-17 13:31:38 · 4581 阅读 · 0 评论 -
vscode调试时遇到Unable to start debugging.Unexpe GDB output from command
调试的时候遇到的一个问题,原因其实很简单,把需要调试的文件的路径改成全英文就可以了把路径全变成英文回到vscode重新调试,可以看到改成英文之后,就没有报错了。原创 2022-04-04 17:01:10 · 2026 阅读 · 2 评论 -
C++小知识(更新中22.4.5)
C++小知识原创 2022-04-01 23:33:38 · 570 阅读 · 0 评论 -
C++:使用范围for语句 for(auto a:b)输出二维数组
for(auto a:b){}b表示的必须是一个序列,比如用花括号括起来的初始值列表、数组或者vector或string等类型的对象,这些类型的共同特点是拥有能返回迭代器的begin和end成员。一、范围for语句输出一维数组一维数组输出非常简单 int arry[3] = {1, 2, 3}; for (int i : arry) { cout << i << ' ' << ends; }范围for语句输出二维数组原创 2022-03-17 20:08:34 · 3456 阅读 · 0 评论 -
C++中的*、&、指针、引用、数组名和二维数组名的含义
C++中的*、&、指针、引用、数组名和二维数组名,对于初学者来说,很难理解,尤其是C语言掌握不好的人来说。一、*、&、指针、引用 int a = 1024; int *ia = &a; //&在右边,叫作取地址,&a是变量a的地址 int &b = a; //&在左边,叫作引用,b和a一样 cout << "&a =原创 2022-03-17 14:45:19 · 3120 阅读 · 0 评论 -
使用迭代器将string容器中的字母全变成大写
#include <iostream>#include <vector>#include <string>using namespace std;int main(int argc, char const *argv[]){ string s1; vector<string> vec; vector<string>::iterator it = vec.begin(); char *c1; whi.原创 2022-03-05 20:43:41 · 225 阅读 · 0 评论 -
VSCode如何运行HTML页面
第一步:首先我们需要新建一个HTML文件,写入一段代码。写完之后点击鼠标右键发现是没有能运行的选项的。第二步:进入“扩展”界面之后,我们在搜索框内输入“ open in browser ”,然后点击安装即可。第三步:安装完成之后,再返回到原先的HTML界面,然后鼠标右键,找到下图标识的选项进行运行,或者快捷键ALT+B可以看到运行成功了!...原创 2021-11-10 15:40:06 · 9694 阅读 · 0 评论 -
VSCode安装教程(2021)
第一步:下载官网:下载视觉工作室代码 - Mac, Linux, 窗口 (visualstudio.com)这里可以看到有两个版本,用户和系统版本,还有一个压缩包,可以看下面的解释总结一下,如果是自己用,下第一个(用户版本)就行第二步:安装安装就已经完成了第三步:汉化汉化完成!...原创 2021-11-10 15:21:09 · 1050 阅读 · 0 评论