
C++语言
文章平均质量分 59
C++知识
blogSpaceX
这个作者很懒,什么都没留下…
展开
-
C++如何进阶? -- 整理一些学习资料
在学习完C++最基础的知识后,需要对C++有更近一步的认知。看门见山,首先贴出学习资料:侯捷老师的这几个视频是每个学习C++的人都应该仔细看几遍下来的,只看一遍是绝对记不住的具体来说必看的两本书,或者说,必看的两本书和一章节是STL源码剖析、Effective C++、深度探索C++对象模型第三章(虚函数)。而选看的两本书: More Effective C++、深度探索C++第三章以外的部分。原创 2024-09-22 12:00:52 · 440 阅读 · 0 评论 -
C++返回值优化(Return Value Optimization, RVO)与移动语义(Move Semantics)
在C++编程中,返回值优化(Return Value Optimization, RVO)与移动语义(Move Semantics)是提高程序效率、减少不必要的对象复制的重要机制。原创 2024-09-19 20:51:38 · 458 阅读 · 0 评论 -
C++常用但难记的语法
static和inline联合使用既能提高程序的运行效率又能让其声明后被多个.c文件使用。原创 2024-07-22 11:43:25 · 453 阅读 · 0 评论 -
c++中constexpr的一个用法——在泛型编程中的作用
constexpr`是C++11引入的关键字,用于指示编译器在编译时进行计算和优化,以便在运行时获得更好的性能。在这个特定的上下文中,`constexpr`用于在编译时检查一个条件,并根据该条件的结果在编译时执行不同的代码。如果条件为`true`,则编译器将执行`if`语句中的代码块。如果条件为`false`,则编译器将忽略`if`语句中的代码块。这在泛型编程(运用模版)中很有作用,由于模板的typename类型可以改变,但是如果我们某段代码需要执行只有Type类型的变量才有的方法/属性。原创 2024-05-08 16:53:44 · 293 阅读 · 0 评论 -
c++多线程2小时速成
c++多线程基础需要掌握这三个标准库的使用:std::thread,std::mutex, andstd::async。原创 2024-05-04 17:36:18 · 1371 阅读 · 0 评论 -
C++ 智能指针的正确使用方式:unique_ptr VS shared_ptr
我们大多数场景下用到的应该都是 unique_ptr。unique_ptr 代表的是专属所有权,即由 unique_ptr 管理的内存,只能被一个对象持有。所以,unique_ptr 不支持复制和赋值// 编译错误如果想要把 w 复制给 w2, 是不可以的。因为复制从语义上来说,两个对象将共享同一块内存。因此,unique_ptr 只支持移动// w2 获得内存所有权,w 此时等于 nullptr。原创 2024-03-14 10:50:10 · 4948 阅读 · 2 评论 -
=号在python中和C++中的区别——引用拷贝(python)与值拷贝(C++),然后结尾总结了Python的浅拷贝和深拷贝
python浅拷贝与深拷贝原创 2022-10-22 23:15:37 · 85 阅读 · 0 评论 -
C++ sort函数中利用lambda进行自定义排序规则
在c++中,由于sort()函数默认提供的是由小到大的排序方式,因此有时候我们需要自定义排序规则来实现由大到小的排序。一维vector<>排序#include <bits/stdc++.h>using namespace std;void printvec(vector<int>& vec){ for(int i = 0; i ...原创 2022-12-24 21:34:00 · 743 阅读 · 0 评论 -
C++栈上创建对象和堆上创建对象
一、在栈(Stack)上创建对象Student是一个类,创建一个实例化对象:Student stu;下面进行创建对象指针的操作(非必须):上面代码中创建的对象 stu 在栈上分配内存,需要使用&获取它的地址:Student *pStu = &stu;pStu 是一个对象指针,它指向 Student 类型的数据,也就是通过 Student 创建出来的对象。二、...原创 2023-02-19 10:51:00 · 928 阅读 · 0 评论 -
C/C++语言 ++i 与 i++ 区别
记忆小技巧,看 ++ 的位置,如果 ++ 在前,就是先自加,再赋值,如果 ++ 在后,就是先赋值再自加。#include<stdio.h>int main(){ int i = 0; int j = ++i; printf("i=%d\tj=%d\n", i, j); return 0;}此时输出i=1 j=1#i...原创 2022-11-24 23:51:00 · 70 阅读 · 0 评论 -
关于std::vector<bool>
一、引子std::vector<bool>经常应用在leetcode刷题中。但是effective stl 不建议使用std::vector<bool>,原因是:严格意义上讲,vector<bool> 并不是一个 STL 容器;vector<bool> 底层存储的并不是 bool 类型值。二、std::vector<bool&...原创 2023-04-08 16:50:00 · 528 阅读 · 0 评论 -
C指针——知识点集锦
CPU 访问内存时需要的是地址,而不是变量名和函数名!变量名和函数名只是地址的一种助记符,当源文件被编译和链接成可执行程序后,它们都会被替换成地址。编译和链接过程的一项重要任务就是找到这些名称所对应的地址。变量名表示的是数据本身,而函数名、字符串名和数组名表示的是代码块或数据块的首地址。指针变量:如果一个变量存储了一份数据的指针(地址)int a = 100;int *p_a = &...原创 2023-04-15 15:36:00 · 68 阅读 · 0 评论 -
CPP 如何将一个函数泛型化 How to Make a Function Generic
1. Developing generic function (设计泛型函数)1.1. Steps (步骤)(1) To start with non-generic function (先设计/编写一个非泛型函数)(2) To debug and test it (调试/测试该函数)(3) To convert it to a gen...原创 2022-12-06 21:09:00 · 79 阅读 · 0 评论 -
cpp浅拷贝和深拷贝
一、浅拷贝Shallow copy: if the field is a pointer to some object, the address of the pointer is copied rather than its contents. (浅拷贝:数据域是一个指针,只拷指针的地址,而非指针指向的内容)二、深拷贝Deep copy: Copy the contents that ...原创 2022-12-11 14:30:00 · 139 阅读 · 0 评论 -
cpp优先队列(priority_queue)
优先队列的概念在优先队列中,队列中的每个元素都与某个优先级相关联,但是优先级在队列数据结构中不存在。优先队列中具有最高优先级的元素将被首先删除,而队列遵循FIFO(先进先出)策略,这意味着先插入的元素将被首先删除。如果存在多个具有相同优先级的元素,则将考虑该元素在队列中的顺序。优先队列的语法priority_queue<Type, Container, Functi...原创 2022-12-18 17:14:00 · 633 阅读 · 0 评论 -
指针和数组五连鞭,玩转cpp指针
本篇为b站的专题笔记,参考链接为指针和数组的重难点解析零、指针基础知识回顾int a = 100;int *p_a = &a;这里定义了一个int类型的变量a,它占用了地址为0X11A(乱编的,仅示意)的内存存储了整数100。在定义指针变量 p_a 的同时对它进行初始化,并将变量 a 的地址赋予它,此时 p_a 就指向了 a。值得注意的是,p_a 需要的一个地址,a 前...原创 2022-12-10 15:15:00 · 45 阅读 · 0 评论 -
指针与数组(二)
指针和数组之间的替换 :一维数组和指针:数组名是数组的首地址数组名是一个常指针 不可修改可以对指针操作来访问元素访问数组的方式:1.直接访问数组a[5];2.使用指针*p 等价于a[0]*(p+1)等价于a[1]3.修改数组的值a[5]=10;*(p+5)=10;实例:main() { int a[ARRAY_SIZE]; // 数组 for (int i ...原创 2023-03-26 11:21:00 · 60 阅读 · 0 评论 -
cpp Copy Constructor 拷贝构造函数
Copy Constructions (拷贝构造)拷贝构造:用一个对象初始化另一个同类对象拷贝构造函数可以简写为 copy ctor,或者 cp ctor。在Unix/Linux中,拷贝文件的命令叫做 cp。如何声明拷贝构造函数(copy ctor):Circle (Circle&);Circle (const Circle&);调用拷贝ctor:Circle c1...原创 2022-12-06 23:21:00 · 59 阅读 · 0 评论