
c++
xqx_Zi_yu
我与我周旋久,宁做我。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++中std::is_constructible的使用
其中,T是待检查的类型,Args是构造类型所需的参数列表。is_constructible的返回值是一个std::integral_constant类型的实例,代表检查结果,is_constructible_v是is_constructible的一种快捷方式,可以直接获取该实例的值。解释:A类可以通过int类型的参数构造,能够通过float类型的参数构造。std::is_constructible是C++11标准中的类型萃取工具之一,用于检查可以在某些条件下构造给定类型的对象。原创 2023-05-26 15:58:45 · 1714 阅读 · 0 评论 -
C++中std::remove_reference
例如,当实现一个使用 type_traits 的模板时,需要根据输入类型是否是引用类型来进行不同的处理。头文件中的一个类型萃取工具,用于从一个类型中移除引用(Reference)特性。它返回一个新的类型,该类型是从原始类型中移除了引用特性后得到的。移除它们的引用特性后,分别变成了 int 和 const bool 类型。具体来说,如果输入的类型T是一个引用类型,即T存在引用特性,则。的情况,我们可以看到它们都实际上是引用类型,但当使用。是一个const bool类型的引用、是一个int类型的引用、原创 2023-05-26 15:59:03 · 2235 阅读 · 0 评论 -
C++中std::enable_if的使用
使用std::enable_if,我们可以通过条件检查来指定哪个函数模板将被编译器选择。std::enable_if是一个类型萃取工具,用于在编译时根据某些条件确定是否启用或禁用函数的模板重载。,否则,它不提供成员类型。因此,我们可以在函数模板中使用std::enable_if来控制编译器是否选择特定模板重载。上面的代码通过static_assert在编译时强制执行一个条件检查,如果条件不满足,则会产生一个编译时错误。当条件B为true时,std::enable_if模板的特化版本将具有成员类型。原创 2023-05-26 15:57:29 · 589 阅读 · 0 评论 -
C++中std::decay如何使用
std::decay是一个类型萃取工具,它的作用是返回一个类型,这个类型是原始类型的"衰减"(decay)版本,可以理解为去掉了某些"修饰符"的类型。否则,如果T是const或volatile限定符修饰的类型,则会去掉这些限定符。否则,如果T是函数类型,则它会将T衰减为指向函数指针的类型。如果T是数组类型,则它会将T衰减为指向元素类型的指针类型。否则,如果T是引用类型,则它会将T衰减为对应的非引用类型。原创 2023-05-26 15:55:21 · 775 阅读 · 0 评论 -
C++中std::reference_wrapper如何使用
std::reference_wrapper 是一个模板类,它包装了一个引用,并以可调用对象的方式提供了对该引用的访问。上面代码通过 std::ref 将 int 和 std::string 引用包装成 std::reference_wrapper 类型,并将它们解包到 x 和 y 变量中。在 C++17 中,std::reference_wrapper 还有一个非常有用的应用,就是在结构化绑定中使用,可以将引用包装成 std::reference_wrapper 类型,然后进行解包操作。原创 2023-05-26 15:54:39 · 305 阅读 · 0 评论 -
G++编译时对有返回值的函数,但没有return语句时,不报错
g++编译对有返回值的函数,但没有返回值时,不报错原创 2022-11-15 15:54:31 · 1028 阅读 · 0 评论 -
初识__thread关键字
__thread是GCC内置的线程局部存储设施,__thread变量每一个线程有一份独立实体,各个线程的值互不干扰。可以用来修饰那些带有全局性且值可能变,但是各线程独立不干扰的变量;只能修饰POD类型(类似整型指针的标量),不能修饰class类型,因为无法自动调用构造函数和析构函数;__thread限定符可以单独使用,也可带有extern或static限定符,但不能带有其它存储类型的限定符。__thread可用于全局的静态文件作用域,静态函数作用域或一个类中的静态数据成员。不能用于块作用域,自动或非.原创 2021-07-13 22:48:41 · 303 阅读 · 0 评论 -
C++线程池实现
#pragma once#include <thread>#include <queue>#include <vector>#include <atomic>#include <future>#include <functional>#include <stdexcept>#include <condition_variable>#define THREADPOOL_MAX_NUM 16cl.原创 2021-05-26 17:30:19 · 100 阅读 · 0 评论 -
位图法解决查重问题
位图法介绍C++STL中有相应的bitset容器,其实就是位示图法用每一位来存放某种状态,适用于大规模数据,但数据状态又不是很多的情况。通常是用来判断某个数据存不存在的。使用位图法处理问题,需要事先得知数据中最大值是多少。如果最大值Max=100000,则unsigned char数组大小size=Max/8+1当记录一个数字时需要计算其字节位置和位位置。// 计算整数应该放置的字节位,即数组下标int index = num / 8; // 计算对应字节的位位置int offs原创 2021-03-16 21:47:14 · 323 阅读 · 0 评论 -
C++构造函数不可以为虚函数的原因
1、虚函数相应一个指向vtable虚函数表的指针,但是这个指向vtable的指针事实上是存储在对象的内存空间的。假设构造函数是虚的,就须要通过 vtable来调用,但是对象还没有实例化,也就是内存空间还没有,怎么找vtable呢?所以构造函数不能是虚函数。2、虚函数的作用在于通过子类的指针或引用来调用父类的那个成员函数。而构造函数是在创建对象时自己主动调用的,不可能通过子类的指针或者引用去调用。...原创 2021-03-16 19:43:21 · 389 阅读 · 0 评论 -
详解new与malloc的10点区别
前言几个星期前去面试C++研发的实习岗位,面试官问了个问题:new与malloc有什么区别?这是个老生常谈的问题。当时我回答new从自由存储区上分配内存,malloc从堆上分配内存;new/delete会调用构造函数/析构函数对对象进行初始化与销毁;operator new/delete可以进行重载;然后强行分析了一下自由存储区与堆的区别。回来后感觉这个问题其实回答得不怎么好,因为关于new与malloc的区别实际上很多。面试期间刚好是刚期末考完,之后是几个课设没时间去整理。今天花了点时间整转载 2021-03-16 19:14:56 · 248 阅读 · 1 评论 -
智能指针
智能指针智能指针 保证能够做到资源的自动释放利用栈上的对象出作用域自动析构的特征,来做到自动释放的分为两种:不带引用计数的智能指针和带引用计数的智能指针1、不带引用计数的智能指针auto_ptr不推荐使用,当拷贝构造或者赋值时,指针所有权会转移scoped_ptr只能使用单个构造源码中:scoped_ptr(const scoped_ptr<T>&)=delete;scoped_ptr<T>& operator=(const原创 2021-03-09 18:25:32 · 85 阅读 · 0 评论 -
实现带引用计数的智能指针
#include <iostream>#include <memory>using namespace std;//对资源引用计数的类template<typename T>class RefCnt{public: RefCnt(T *ptr = nullptr):mptr(ptr) { if(mptr!=nullptr) mcount=1; } void addRef(){ mcount++;} i.原创 2021-03-09 18:05:30 · 140 阅读 · 0 评论 -
实现简单的不带引用计数的智能指针
#include <iostream>#include <memory>using namespace std;template<typename T>class CSmartPtr{public: CSmartPtr(T *ptr = nullptr):mptr(ptr) { } ~CSmartPtr() { delete mptr; mptr=nullptr; } .原创 2021-03-09 17:52:48 · 101 阅读 · 0 评论 -
类模板案例——通用数组
实现一个通用的数组类,要求如下:可以对内置数据类型以及自定义数据类型进行存储将数组中的数据存储到堆区提供对应的拷贝构造函数以及operator=防止浅拷贝问题提供尾插法和尾删法对数组中的数据进行增加和删除可以通过下标的方式访问数组中的元素可以获取数组的容量和当前元素的个数类模板代码:Array.hpp#pragma once#include <iostream>using namespace std;template<class T>cla原创 2021-01-18 18:10:35 · 355 阅读 · 0 评论