自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 C++ 给大家出一道指针方面的题,请来挑战

要求不许使用计算机,使用纸笔在10分钟内写出答案,大家可以回复你得出的答案,看看是否能回答正确。

2024-06-05 16:00:22 387

原创 C++ 什么时候使用std::ref

ref(obj)返回值可以简单理解为一个ref类对象,在此对象中有一个变量指针指向obj的地址,也就是说ref类中的数据包含了obj的引用。当然,实际实现和这个描述有一定区别,但你可以简单这样理解。

2024-05-30 17:30:12 555

原创 C++ std::function和std::bind的六种用法总结

1,使用function接收普通函数2,使用function接收lambda函数3,使用function函数来接收函数对象4,使用bind函数绑定类中的一般函数5,使用bind函数绑定类中的多态函数6,使用function来实现回调。

2024-05-29 17:00:49 341

原创 C++ 线程同步condition_variable的使用

创建一个scondition_variable对象。创建一个互斥量对象mutex。创建两个线程:等待线程和唤醒线程。在等待线程中,使用unique_lock锁定互斥量,并调用wait函数进入等待状态。在唤醒线程lock_guard锁定互斥量,并调用notify_one或notify_all函数唤醒等待的线程。

2024-05-28 15:45:11 275

原创 C++ scan和sscan

这篇文章描述的很清楚,附上链接:http://t.csdnimg.cn/jJTzt

2024-05-23 15:40:50 206 1

原创 C++ 如何分别使用C和C++进行格式化输入输出操作

【代码】C++ 如何分别使用用C和C++的格式化输入输出。

2024-05-21 19:49:37 94

原创 C++ string转int的五种方法

【代码】C++ int转string的五种方法。

2024-05-21 17:30:15 697

原创 C++ int转string的三种方法

【代码】C++ int转string的三种方法。

2024-05-21 17:15:49 670

原创 C++ STL list去重

这样的代码是不能编译通过的。list本身提供了sort函数和unique函数,因此用这两个函数就可以实现去重。标准库中的函数sort可以用于数组,vector, deque。

2024-05-17 17:50:07 188 1

原创 C++ iterator(迭代器)总结

定义:容器类名::iterator 迭代器名;

2024-05-16 15:52:55 178

原创 C++: 自己动手写一个类似std::auto_ptr的智能指针模板类

auto_ptr指针虽然已经被抛弃不再使用,但他是unique_prt和share_ptr指针的基础,通过自己写的自动指针类,就可以清楚的知道auto_ptr的使用方法,以及它有什么不足之处,为什么会被抛弃。从代码可以看出,auto_ptr只支持拷贝构造函数,并在拷贝构造函数中完成了对象指针所有权的转移。也就是说,一个对象指针只能被一个智能指针所拥有,这个和auto_prt是一样的。auto_ptr的缺点是:一个对象指针不能被多个智能指针对象所拥有,限制了其应用范围。share_ptr则避免了这个缺点。

2024-05-11 20:19:47 203 1

原创 C++智能指针是什么?

C++标准库有4种智能指针:std::auto_ptr,C++98引入,目前已经抛弃不用。std::unique_ptr,独占智能指针std::shared_ptr,共享智能指针std::weak_prt,弱共享指针,主要是为了解决shared_ptr的问题。所谓智能指针,其本质是一个类模板,它可以创建任意类型的指针对象,当智能指针使用完成后,对象就会自动调用析构函数去释放该指针指向的内存空间。

2024-05-11 15:00:28 246 1

原创 C++ Vector去重

/或者使用下面两个简单语句即可完成去重。

2024-05-10 20:26:32 181 1

原创 C++:Vector 去重,并且保持顺序不变的方法

这行代码返回的就是新的iterator,并且指向被删除的数据后面那个数据。注意:调用erase后,原来的iterator就失效了,会变成野指针。因此必须重新给iterator赋值。其原理是,从vector的第二个数据开始,如果从vector起始找到相同的数据,则把自身删除。这样一直循环到vector的最后一个数据。

2024-05-10 19:57:19 295 1

原创 C++为什么要引入右值概念(三)

我的意见是:引用就是地址,右值引用实际上就是把地址转为另外一种类型,从而可以调用不同的赋值函数(移动赋值函数)。这个是由编译器来决定的。但也有人提出不同意见:如果是地址,那么为什么一个地址要分为左值引用和右值引用呢?以上只是个人意见,如果您有不同的见解,欢迎探讨。一般理解,对象的引用就是对象的地址。

2024-05-08 19:54:50 96

原创 C++为什么要引入右值概念(二)

如果在类中重载了移动赋值函数,那么代码:b1 =a 就会调用拷贝赋值函数,而代码b2 = move(b)则调用移动赋值函数。move(b)的作用就是把左值引用转为右值引用。由此我们得出结论,之所以引入右值引用,其实就是为了能够根据参数不同来调用不同的赋值函数。如果赋值操作的右边参数为左值引用,那么调用拷贝赋值函数,反之如果为右值引用,则调用移动赋值函数。这个是由系统编译的时候来确定的。并且如果进行了移动赋值,那么被移动的对象则不可再使用,因为其内存所有权已经移交给被赋值的对象。

2024-05-08 19:32:44 255

原创 C++为什么要引入右值概念(一)?

C++最早没有右值的概念,自从C++11以后引入右值概念。那么什么是右值呢?举例如下:int a = 10;a就是传统的变量,称为左值。10为常量,称为右值。左值是可以取得其地址的,右值是不能取得其地址的。我们可以用&a来取得变量a的地址,但10不能使用&符号,因此a为左值,10为右值。函数的返回值也是一个右值。此函数返回一个sum,我们无法取得sum的地址,因此函数的返回值是一个右值。那么为什么C++ 11要引入右值的概念呢?我们先举一个例子。

2024-05-08 18:14:54 468

原创 C++函数对象的使用

如果一个类重载了运算符(),那么这个类的对象就是函数对象在IntCompare类中重载了运算符(),那么这个类的对象叫做函数对象。

2024-05-07 16:54:21 429

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除