Veitch Kyrie's Blog

Thinking will not overcome fear but action will.

C++ 11 STL算法

常用STL算法的使用示例和参数说明

C++ 11 STL算法 STL算法部分主要由头文件,,组成.要使用 STL中的算法函数必须包含头文件,对于数值算法须包含,中则定义了一些模板类,用来声明函数对象. STL中算法大致分为四类: ​ 1、非可变序列算法:指不直接修改其所操作的容器内容的算法. ​ 2、可变序列算法:指可以修改它们所操作的容器内容的算法. ​ 3、排序算法:包括对序列...

C++11 STL算法简介

常用STL算法简介汇总

C++11 STL算法简介 STL(Standard Template Library),即标准模板库,是一个具有工业强度的,高效的C++程序库。它被容纳于C++标准程序库(C++ Standard Library)中,是ANSI/ISO C++标准中最新的也是极具革命性的一部分。该库包含了诸多在计算机科学领域里所常用的基本数据结构和基本算法。为广大C++程序员们提供了一个可扩展的应用框架...

C++11 noexcept 运算符

noexcept 操作符的作用是阻止异常的传播

noexcept 运算符 noexcept 是一个运算符,有以下两种形式: noexcept noexcept(expression) 第一种形式等同于 noexcept(true)。当 noexcept 用于函数声明时,指定了函数是否会抛出异常。noexcept(true) 表示被修饰的函数不抛出异常,noexcept(false) 表示被修饰的函数会抛出异常。 noexcept...

C++11 static_assert

编译期间的断言,因此叫做静态断言。

C++11 static_assert C++0x中引入了static_assert这个关键字,用来做编译期间的断言,因此叫做静态断言。 其语法:static_assert(常量表达式,提示字符串)。 如果第一个参数常量表达式的值为false,会产生一条编译错误,错误位置就是该static_assert语句所在行,第二个参数就是错误提示字符串。 使用static_assert,我们可...

C++11 强枚举类型

关于C++强枚举新特性

C++11 强枚举类型 在标准C++11之前的枚举是继承C的,枚举类型不是类型安全的。枚举类型被视为整数,这使得两种不同的枚举类型之间可以进行比较。 一、C中enum类型的局限语法: enum type1{a, b, c}; enum type2{a, d, e}; 1、非强类型作用域 上面两种不同类型的枚举都含有a枚举常量,在相同作用域会发生冲突,编译会报错 2、允许编译器隐式类...

C++ 11 auto关键字

C++ 关键字理解

C++ 11 auto关键字 熟悉脚本语言的人都知道,很多脚本语言都引入了“类型自动推断”技术:比如Python,可以直接声明变量,在运行时进行类型检查。随着C++11标准的发布,C++语言也引入了类型自动推断的功能,这就是我们今天要介绍的auto关键字。 C++是一种强类型语言,声明变量时必须明确指出其类型。但是,在实践中,优势我们很难推断出某个表达式的值的类型,尤其是随着模板类型的出...

#C++11 constexpr使用 C++11为了提高代码执行效率做了一些改善。这种改善之一就是:生成常量表达式,允许程序利用编译时的计算能力。假如你熟悉模板元编程,你将发现constexpr使这一切变得更加简单。constexpr使我们很容易利用上编译时编程的优势。 常量表达式主要是允许一些计算发生在编译时,即发生在代码编译而不是运行的时候。这是很大的优化:假如有些事情可以在编译时做,...

C++:istreambuf_iterator与istream_iterator的区别

关于2个流迭代器的理解和区别

C++:istreambuf_iterator与istream_iterator的区别 std::vector<uint8_t> data; std::ifstream stm(ECU_CA_KEY_PATH); if (false == stm.is_open()) return false; data.clear(); std::copy...

std::copy 和 std::back_inserter

std::copy 和 std::back_inserter #include <iostream> #include <vector> using namespace std; #define print_vector(v1) \ for(auto iter = v1.begin();iter != v1.end();iter++) \ ...

设计模式(八) C++ 组合(Composite)模式

每天一个设计模式

设计模式(八) C++ 组合(Composite)模式 我们PC用到的文件系统,其实就是我们数据结构里的树形结构,我们处理树中的每个节点时,其实不用考虑他是叶子节点还是根节点,因为他们的成员函数都是一样的,这个就是组合模式的精髓。他模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。 将对象组合成树形结构以表示“部分-整...