C++基础
文章平均质量分 67
neko233
这个作者很懒,什么都没留下…
展开
-
C++时间类 std::chrono
std::chrono原创 2022-04-15 11:09:19 · 4424 阅读 · 0 评论 -
C++线程 future使用,std::async、std::packaged_task、std::promise
future、async、packaged_task、promise原创 2022-04-13 17:39:45 · 1200 阅读 · 0 评论 -
C++17.std::scoped_lock类,同时获取多个锁
c++17 scoped_lock类原创 2022-04-13 14:38:19 · 1897 阅读 · 0 评论 -
cout打印16进制
#include <iomanip>#include <sstream>char buf[4096] = {0};//.......{ //打印输出 //输出16进制 std::stringstream ss; for(int i =0;i<size;++i) ss<<std::setfill('0')<<std::setw(2)<<std::hex<<(unsigned int)(unsigned cha原创 2021-09-26 09:46:19 · 4356 阅读 · 0 评论 -
c/c++时间类型
1、time_ttime_t 类型,这本质上是一个长整数,表示从1970-01-01 00:00:00到目前计时时间的秒数,如果需要更精确一点的,可以使用timeval精确到毫秒。time_t cur = time(NULL);2、struct timeval在time.h中的定义为:struct timeval{ __time_t tv_sec; /* Seconds. */ __suseconds_t tv_usec; /* Microseconds. */};原创 2021-08-26 15:50:07 · 2626 阅读 · 0 评论 -
C++ 静态对象与全局对象的构造顺序
C++ 编程规范-静态对象与全局对象的构造顺序静态对象与全局对象的构造顺序类中的静态对象类中的静态成员对象,即使没有被使用,也会被构造和析构。比如B类中的m_sa(类类型的静态成员变量),也会被分配内存。如果m_sa不是类类型,而是简单类型,比如double, int,那么源码中如果没有用到这个静态成员变量,编译器可能不会分配内存。函数中的静态对象:如果该函数没被调用,那么这个静态对象不会被构造和析构。全局对象如果该工程中每个源文件中都定义着一些不同的全局对象,那么全局对象的转载 2021-08-10 10:46:19 · 472 阅读 · 0 评论 -
c++11 tuple元组
tuple元组是一个固定大小的不同类型值的集合,是泛化的std::pair。可以把它当成一个通用的结构体来用,不需要创建结构体又获取结构体的特征,在某些情况下可以取代结构体。1、构造一个tuple:std::tuple<const char*,int> tp = make_tuple("a",1);上面的tuple等价于一个结构体:struct A{ char* p; int len;};另一种可以创建元组的方法,利用std::tie,它会创建一个元组的左值引用。int原创 2021-04-22 16:54:50 · 208 阅读 · 0 评论 -
[c++11]右值引用、移动语义和完美转发
转自 [c++11]我理解的右值引用、移动语义和完美转发c++中引入了右值引用和移动语义,可以避免无谓的复制,提高程序性能。有点难理解,于是花时间整理一下自己的理解。左值、右值C++中所有的值都必然属于左值、右值二者之一。左值是指表达式结束后依然存在的持久化对象,右值是指表达式结束时就不再存在的临时对象。所有的具名变量或者对象都是左值,而右值不具名。很难得到左值和右值的真正定义,但是有一个可以区分左值和右值的便捷方法:看能不能对表达式取地址,如果能,则为左值,否则为右值。看见书上又将右值分为将转载 2021-04-02 11:00:08 · 104 阅读 · 0 评论 -
stl位图bitset用法
转自 bitset大法好bitset存储二进制数位。bitset就像一个bool类型的数组一样,但是有空间优化。bitset中的每个元素都能单独被访问,例如对于一个叫做a的bitset,表达式a[3]访问了它的第4个元素,就像数组一样。(但是输出单独访问结果不能用printf,和bitset有关的输出都用cout)另外bitset的大小在编译时就需要确定,也就是说bitset<>的尖括号中写的是大小。#include <iostream>#include <bit转载 2021-03-29 09:47:50 · 145 阅读 · 0 评论 -
智能指针
智能指针是行为类似于指针的类对象。模板auto_ptr是C++98提供的解决方案,C++11已将其摒弃,并提供了另外两种解决方案,unique_ptr和shared_ptr。1. 使用智能指针这三个智能指针模板(auto_ptr、unique_ptr和shared_ptr)都定义了类似指针的对象,可以将new获得(直接或间接)的地址赋给这种对象。当智能指针过期时,其析构函数将使用delete来释放内存。常规指针与auto_ptr的区别,如下图所示://创建int类型的智能指针#include &l原创 2021-03-03 17:15:15 · 534 阅读 · 1 评论 -
类型转换运算符
c++中4个类型转换运算符:dynamic_castconst_caststatic_castreinterpret_cast可以根据目的选择一个适合的运算符,而不是使用通用的类型转换。1、dynamic_cast假设High和Low是两个类,而ph和pl的类型分别为High* 和Low*,则仅当Low是High的可访问基类(直接或间接)时,下面的语句才将一个Low*指针赋给pl:否则,该语句将空指针赋给pl。该运算符的用途是,使得能够在类层次结构中进行向上转换(由于is-a关系,原创 2021-03-03 15:33:21 · 913 阅读 · 3 评论 -
C++ 类的static静态成员
转自:https://www.cnblogs.com/wkfvawl/p/10834549.html静态static静态成员的提出是为了解决数据共享的问题。实现共享有许多方法,如:设置全局性的变量或对象是一种方法。但是,全局变量或对象是有局限性的。在全局变量前,加上关键字static该变量就被定义成为了一个静态全局变量。 该变量只有在本源文件中可见,严格讲应该为定义之处开始到本文件结束,静态全局变量不能被其他文件所用。通常,在函数体内定义一个变量,每当程序运行到该语句时都会给该局部变量分配栈内存。转载 2021-02-03 17:00:56 · 459 阅读 · 0 评论