
C++
文章平均质量分 61
C/C++编程语言的理解和经验
炫橘子上火
玩笑人生
展开
-
C++中对象调用成员函数this指针的作用
C++中对象调用成员函数this指针的作用原创 2023-02-12 21:09:11 · 434 阅读 · 0 评论 -
deque函数的使用方法
C++中deque函数的使用方法deque表示双端队列,在STL中,其实现类似vector,支持随机访问。主要区别在于,从deque对象的开始位置插入和删除元素的时间是固定的,而不像vector中那样是线性时间。所以多数操作发生在序列的起始和结尾处,则应考虑使用deque数据结构。此外,为了实现deque两端执行插入和删除操作的时间为固定的这一目的,deque对象的设计比vector对象更为复杂。因此,尽管二者都提供对元素的随机访问和在序列中部指向线性时间的插入和删除操作,但vector容器执行这些操作更原创 2021-02-26 08:16:44 · 2537 阅读 · 0 评论 -
list的使用方法
C++中list的使用方法list模板类(在list头文件中声明)表示双向链表。除第一个和最后一个元素之外,每个元素都与前后的元素相链接,这意味着可以双向遍历链表。list和vector之间关键的区别在于,list在链表中的任一位置进行插入和删除的时间是固定的(vector模板提供了除结尾处外的插入和删除,在结尾处,它提供了固定时间的插入和删除)。因此vector强调的是通过随机访问进行快速访问,而list强调的是元素的快速插入和删除。此外,与vector相似,list也是可翻转容器。但与vector不同原创 2021-02-25 08:39:23 · 753 阅读 · 0 评论 -
queue的使用方法陈列
C++中queue的使用方法queue模板类(在头文件queue中声明)是一个适配器类。queue模板让底层类(默认为deque)展示典型的队列接口。quue模板的限制比deque更多。它不仅不允许随机访问队列元素,甚至不允许遍历队列。它把使用限制在定义队列的基本操作上,可以将元素添加到队尾、从队首删除元素、查看队首和队尾的值、检查元素数目和测试队列是否为空。1. 头文件包含#include <queue>2. 定义queue对象queue<int> q1;queu原创 2021-03-01 07:53:03 · 258 阅读 · 0 评论 -
set的使用方法
C++中set的使用方法set是C++容器类中的一种关联容器,内部数据结构采用红黑树RB-tree实现,支持快速访问,删除等操作。set是关联集合,可反转,可排序,且键是唯一的,所以不能存储多个相同的值。set的特性是,所有元素都会根据元素的键值自动被排序。set的元素不像map那样可以同时拥有实值(value)和键值(key),set元素的键值就是实值,实值就是键值。set不允许有两个元素有相同的键值。另外,不能通过set的迭代器改变set的元素值,因为set的元素值就是其键值,关系到set元素的排列规原创 2021-03-04 08:26:29 · 2102 阅读 · 1 评论 -
vector容器的方法陈列,及简单使用
C++中 vector容器的方法陈列,及简单使用1. 简介vector是数组的一种类表示,具有自动内存管理功能,可以动态的改变vector的长度,并随元素添加和删除而增大和缩小。它提供了对元素的随机访问。在尾部添加和删除元素的时间是固定的,但在头部或中间插入和删除元素的复杂度为线性时间。2. 操作总览(1)头文件包含:#include <vector> using namespace std;(2)容器方法:1.push_back() 在数组的最后添加一个数据2.pop_b原创 2021-02-24 08:34:48 · 271 阅读 · 0 评论 -
stack的使用方法
C++中stack的使用方法stack模板类(在头文件stack中声明)是一个适配器类,它给底层类(默认情况下为vector)提供了典型的栈接口。stack模板的限制比vector多。它不仅不允许随机访问栈元素,甚至不允许遍历栈。它把使用限制在定义栈的基本操作上,即可以将压入推到栈顶、从栈顶弹出元素、查看栈顶的值、检查元素数目和测试栈是否为空。1. 头文件包含#include <stack>2. 构造函数1. //默认构造函数 stack<int> first;/原创 2021-03-01 08:36:30 · 2645 阅读 · 0 评论 -
multiset的使用方法
C++中multiset的使用方法多元集合(MultiSets)的特性以及用法和集合(Sets)完全相同,唯一的差别在于它允许键值重复,即multiset中允许有重复元素,而set中不允许有重复元素。头文件包含##include <set>构造函数和Set相同1. set<int> first;//初始化一个int类型的空set(默认构造器)2. int myints[]= {10,20,30,40,50}; set<int> second (my原创 2021-03-05 22:01:41 · 1295 阅读 · 1 评论 -
map的使用方法
C++中map的使用方法map是C++中STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据 处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。map内部使用红黑树实现(一 种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,这种排序是针对键值Key的大小而言的。1. 头文件包含#include <map>2. 构造函数1. //默认构造函数 map<c原创 2021-03-06 21:49:35 · 681 阅读 · 0 评论 -
multimap容器的使用方法
C++中multimap容器的使用方法陈列multimap 容器具有和 map 相同的特性,该容器也会自行根据键的大小对存储的所有键值对做排序操作,和 map 容器的区别在于,multimap 容器中可以同时存储多(≥2)个键相同的键值对。1. 头文件包含#include <map>2. 构造函数注意:**和 map 容器相比,multimap 未提供 at() 成员方法,也没有重载 [] 运算符。**这意味着,map 容器中通过指定键获取指定指定键值对的方式,将不再适用于 mult原创 2021-03-06 22:03:24 · 432 阅读 · 0 评论 -
C++多态、重载、覆盖、隐藏
C++多态、重载、覆盖、隐藏1. 多态在基类中定义一个虚函数,然后在派生类中又定义一个同名,同参数表的函数,这就是多态。多态采用了动态绑定技术。原创 2021-06-10 11:25:47 · 535 阅读 · 3 评论 -
C++中struct和union的区别
(1) 二者都是由不同的数据类型成员组成(否则也不需要定义这俩),但在任何同一时刻, 结构体存放所有的成员变量, 而共用体只存放一个被选中的成员。(2)对于共用体的不同成员赋值,将会对其他成员重写, 原来成员的值就不存在了, 而对于结构体的不同成员赋值是互不影响的。比如:...原创 2021-06-09 10:58:28 · 562 阅读 · 0 评论 -
C++智能指针原理
C++智能指针1. 智能指针原理采用C++ Primer Plus中作者引出智能指针的方式进行说明,感觉超好。首先看2个函数://函数1void remodel(std::string & str){ std::string * ps = new std::string(str); ... str = ps; return;}//函数2void remodel(std::string &str){ std::string * p原创 2021-06-08 22:39:16 · 1017 阅读 · 8 评论 -
C++实现memcpy函数
实现memcpy函数首先是函数接口的实现:void mymemcpy(void* dst, const void* src, size_t num)这里使用了void*作为指针类型,接口更加通用;另一方面src地址使用const,保证src的值不会被改变。第一版本的实现:void mymemcpy(void* dst, const void* src, size_t num) { assert((dst != nullptr) && (src != nullptr));原创 2021-05-14 21:37:41 · 2856 阅读 · 10 评论 -
new申请的内存能否用free释放
突然发现自己接手的C项目里,有许多New申请的空间,却用Free来释放内存。查到两篇写得不错得博客,先收藏此处,以后找时间自己总结一下。C++中new申请的内存, 可以用free释放吗?浅谈 C++ 中的 new/delete 和 new[]/delete[]...原创 2020-09-14 22:15:22 · 1964 阅读 · 0 评论