
C++
red98
这个作者很懒,什么都没留下…
展开
-
GCC版本对C++的支持情况
参考C++版本GCC版本支持情况GCC版本指定版本的命令标志C++98完全支持是GCC 6.1之前版本的默认模式-std=c++98 or -std=gnu++98C++11完全支持从GCC4.8.1版本开始完全支持-std=c++11 or -std=gnu++11C++14完全支持从GCC 6.1版本开始完全支持,是GCC 6.1到GCC 10 (包括) 的默认模式-std=c++14 or -std=gnu++14C++17完全支持从G原创 2021-06-10 09:55:59 · 25397 阅读 · 1 评论 -
【C++】什么是RAII?
什么是RAIIRAII(Resource Acquisition Is Initialization)是由c++之父Bjarne Stroustrup提出的,中文翻译为:资源获取即初始化。 是C++的一种资源管理,避免资源未释放的机制。如何理解RAII资源获取即初始化不太好理解。如果翻译成初始化就获取了资源, 可能更容易理解它的作用。但感觉是只说一半。完整的含义是:初始化后就可以使用了,不需要考虑释资源释放的问题。也有说名字改成作用域界定的资源管理(Scope-Bound Resource Mana原创 2021-05-07 20:06:40 · 699 阅读 · 0 评论 -
C++11 计算时间间隔
steady_clock 专门设计用来计算时间间隔的。#include <iostream>#include <chrono>int main() { int TIMES = 1000000000; int value = 0; auto start = std::chrono::steady_clock::now(); for (int i = 0; i < TIMES; ++i) { value = 1 - value原创 2021-04-21 17:22:36 · 2325 阅读 · 1 评论 -
LeetCode 141. 环形链表
LeetCode给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。/** * Definition for singly-linked list. * stru原创 2020-10-09 19:56:06 · 252 阅读 · 0 评论 -
assert
assert一般在debug版本,用来检查永远不可能发生的条件。release版本禁用assert。头文件#include<assert.h>使用assert(i > 100);不改变代码情况下,禁用assert#include<assert.h> 前面定义#define NDEBUG。编译是添加 -DNDEBUG编译参数。注意只检查添加,不写功能逻辑在assert中。 如i++, 禁用后,不会有++操作。#define NDEBUG要定义在#inc原创 2020-06-09 19:56:41 · 158 阅读 · 0 评论 -
《Effective C++》 条款34 区分接口继承和实现继承
条款34 区分接口继承和实现继承public继承可以细分为函数接口继承和函数实现继承。实际使用的三种情况派生类只继承基类的接口;派生类继承基类的接口和实现, 而且可以重写继承的实现;派生类继承基类的接口和实现, 并且不允许重写任何东西;例子class Shape{public: virtual void draw() const = 0; virtual void error(const string& msg); int objectID() const; .原创 2020-05-09 20:59:35 · 166 阅读 · 0 评论 -
override和final标识符
override和final标识符override和final是C++引入的新的标识符。注意是标识符不是关键字。标识符和关键字的区别关键字(KEYWORD):也称保留字。它们为语言所用,不可用于重定义或重载。标识符(IDENTIFIERS):一个标识符是一个由数字,下划线,小写和大写拉丁字母,和大多数 Unicode 字符组成的任意长度的序列。在声明中,可以用标识符来命名对象、引用、函数、枚举项、类型、类成员、命名空间、模板、模板特化、形参包、goto 标号,以及其他实体。原创 2020-05-09 10:57:54 · 1409 阅读 · 0 评论 -
使用std::function包装类成员函数
std::functionstd::function是一个函数包装器模板,最早来自boost库,对应其boost::function函数包装器。在c++11中,std::function能包装任何类型的可调用元素,可以包装:函数、函数指针、类成员函数指针或任意类型的函数对象。包装类成员函数示例#include <functional>#include <iostream&...原创 2020-04-01 09:08:08 · 10795 阅读 · 0 评论 -
list::splice()
函数功能list::splice(): 将元素从一个list移动到另一list的指定位置。理解关键点移动,移动后元素将不在原来的list。只是移动,不包含任何构造析构等动作。这两个list可以是同一个list。适用于调整list节点位置顺序。函数接口接口功能void splice (iterator position, list& x);移动整个li...原创 2019-10-25 10:48:51 · 485 阅读 · 0 评论 -
智能指针简单实现-shared_ptr
SharedPtr定义//shared_ptrtemplate<typename T>class SharedPtr{public: SharedPtr(T* p = NULL):m_ptr(p){ if (NULL != p){ pm_count = new int(1); cout<<...原创 2019-09-22 20:33:38 · 151 阅读 · 0 评论 -
智能指针简单实现-auto_ptr
AutoPtr定义//AutoPtrtemplate<typename T>class AutoPtr{public: AutoPtr(){ m_ptr = NULL; cout<<"create: m_ptr()."<<endl; } AutoPtr(AutoPtr<T>&...原创 2019-09-22 19:45:45 · 135 阅读 · 0 评论 -
STL标准模板库
原创 2019-07-29 10:49:47 · 207 阅读 · 0 评论 -
string类长度相关的函数size()、length()、max_size()、capacity()
String 类型对象包括三种求解字符串长度的函数size() 和 length():这两个函数执行效果相同,返回 string 类型对象中的字符个数。已使用的多少。max_size():返回 string 类型对象最多包含的字符数。也就是string类型支持的最大字符数,超过这个数,将无法支持,编译器会拋出 length_error 异常。最大支持多少。capacity():返回当前st...原创 2019-07-16 10:34:14 · 9959 阅读 · 0 评论 -
智能指针模板类
智能指针模板类什么是智能指针智能指针是一个类对象,行为类似于指针。 智能是相对于常规指针,常规指针指向的内存,不使用时,需要调用释放函数。但经常会被遗漏或异常时没有处理,造成内存泄漏。智能指针就是为了解决此问题。智能指针对象过期时,可以在智能指针类的析构函数中释放指向的内存,实现自动释放,避免内存泄漏。三种智能指针auto_ptr //C++98 提供的解决方...原创 2018-03-27 11:44:41 · 580 阅读 · 0 评论