• 忘掉天地
  • 仿佛也想不起自己
bingliaolongBingliaolong  2021-08-22 07:28 Aet 隐藏边栏 |   抢沙发  2 
文章评分 1 次,平均分 5.0

noncopyable

  1. 实现一个禁止拷贝的类。

实现

使用

ignore_unused

  1. 让暂时用不到又必须保留的变量在编译时不报警告。

实现

用法

optional

常量

函数

  1. optional:构造未初始化的对象。
  2. optional(v):构造初始化的对象。
  3. optional(condition, v):条件为true则初始化对象,否则不初始化。
  4. emplace:就地用参数创建对象,避免了构造后拷贝的代价。
  5. value:访问元素,如果元素未初始化,则抛出bad_optional_access异常。
  6. value_or(default):如果已经初始化返回内部的元素,否则返回default。
  7. value_or_eval(f):如果未初始化则返回f的调用结果。
  8. make_optional(T const & v);
  9. make_optional(bool condition, T const& v);

用法

assign

  1. 较方便的对标志容器初始化或赋值。

tribool

  1. 在true和false之前还有一个indeterminate状态(未知)
  2. indeterminate()判断是否处于未知状态
  3. indeterminate的逻辑或运算,只与true得true,其他都为indeterminate
  4. indeterminate的逻辑与运算,至于false得false,其他都为indeterminate
  5. indeterminate的逻辑非运算,仍为indeterminate
  6. 可以在全局域内使用BOOST_TRIBOOL_THIRD_STATE(aet)将第三态更名为aet
  7. 输出时,false,true,indeterminate分别对应着,0,1,2

operators

  1. 允许用户在自己的类里面定义少量的操作符,如<,就可方便的生成其他的操作符重载,而且可以保证正确的语义实现。
  2. equality_comparable
    1. 提供==,自动实现!=
  3. less_than_comparable
    1. 提供<,自动实现>,<=,>=
  4. addable
    1. 提供+=,自动实现+
  5. subtractable
    1. 提供-=,自动实现-
  6. incrementable
    1. 提供前置++,自动实现后置++
  7. decrementable
    1. 提供前置--,自动实现后置--
  8. equivalent
    1. 提供<,自动实现==(等价)

  1. 复合运算概念

    1. totally_ordered
      全序概念:组合了equality_comparable和less_than_comparable

    2. additive
      可加减概念:组合了addable和subtractable

    3. multiplicative

      可乘除概念:组合了mulipliable和dividable

    4. arithmetic
      算术运算概念:组合了可加减概念和可乘除概念

    5. unit_stoppable

      可步进概念:组合了前置++和前置--

  1. 相等和等价
    1. 相等:==
    2. 等价:!(x<y)&&!(x>y)
  2. 解引用

  1. 下标

exception

标准库异常

  1. 当系统中需要很多不同种类的异常时,这种方法就不太好。
  2. 标准库的异常一旦被抛出,就成为了一个"死"对象。

boost异常

  1. boost提供了两个类,exception和error_info。

uuid

  1. 一个用来表示和生成uuid的类。
  2. 算法
    1. 基于时间和mac的算法
    2. 分布计算环境算法
    3. md5摘要算法
    4. 随机数算法
    5. sha1摘要算法。

字符串与文本处理

lexical_cast

  1. 进行“字面值”转换。

标准库相关字符串数字操作函数

  1. stoi
  2. stol
  3. stoll
  4. stof
  5. stod
  6. to_string

format

  1. basic_format构造函数接受C字符串或std::string作为格式化字符串。

  2. str返回已经格式化的字符串(不请空)。
    如果没有得到所有格式化字符串要求的参数就会抛出异常。

  3. size返回已格式化化好的字符串的长度。

  4. parse清空format对象的内部缓存,改用一个新的格式化字符串。

  5. clear仅清空缓存。

  6. 格式:

    1. %05d
      输出宽度为5的整数,不足位用0补齐

    2. %-8.3f
      输出左对齐,宽度为8,小数位为3的浮点数

    3. % 10s
      输出10位的字符串,不足位用空格补齐

    4. %05X
      输出宽度位5的十六进制整数,不足位用0补齐

    5. %|spec|
      更好的区分格式化选项与普通字符

    6. %N%
      标记第N个参数

string_ref

  1. 一种轻量级的字符串,只持有字符串的引用,没有内存拷贝成本,因而运行效率很高。
    在C++17标准里面叫string_view。
  2. 虽然string_ref不能直接改变原字符串,但它可以用remove_prefix()和remove_suffix()这两个函数调整string_ref内部的字符串指针和长度,达到变动字符串运用的目的。(不改变原字符串)

string_algo

  1. 一个非常全面的字符串算法库,提供了大量字符串操作函数。
  2. 通过词缀区分版本:
    1. 前缀i:大小写不敏感,否则大小写敏感
    2. 后缀_copy:不变动输入,返回处理结果的拷贝。否则原地处理,输入即输出。
    3. 后缀_if:需要一个作为判断式的谓词函数对象,否则使用默认的判断准则。
  3. 大小写转换:
    1. to_upper
    2. to_lower
  4. 判断式(算法):
    1. lexicographical_compare:根据字典顺序检测字符串是否小于另一个。
    2. starts_with:检测字符串是否以另一个为前缀。
    3. ends_with:检测字符串是否以另一个为后缀。
    4. contains:检测是否包含另一个
    5. equals:检测两个字符串是否相等
    6. all:检测字符串是否满足指定的判断式

  1. 判断式(函数对象):

    1. is_equal
    2. is_less:两个对象是否具有小于关系
    3. is_not_greater:两个对象是否具有不大于关系
  2. 分类

    1. is_space
    2. is_alnum
    3. is_alpha
    4. is_digit
    5. is_graph
    6. is_lower
    7. is_print
    8. is_punct
    9. is_upper
    10. is_xdigit
    11. is_any_of
    12. is_from_range
  3. 修剪

    1. trim_left
    2. trim_right
    3. trim
    4. 有if和copy两种后缀。
  4. 查找

    1. find_first
    2. find_last
    3. find_nth
    4. find_head
    5. find_all
  5. 替换与删除

    1. replace/erase_first
    2. replace/erase_last
    3. replace/erase_nth
    4. replace/erase_all
    5. replace/erase_head
    6. replace/erase_tail
    7. 前8个每个都有前缀i、后缀_copy的组合;后4个只有后缀_copy的版本。
  6. 分割

    1. find_all
    2. split
  7. 合并

    1. join:是分割算法的逆运算。
  8. 查找、分割迭代器

    1. find_iterator
    2. split_iterator

xpressive

  1. 一个先进的灵活的功能强大的正则表达式库。
  2. 提供动态和静态两种使用方式:
    1. 静态:类似spirit,使用操作符重载编译器的表达式对象,可以在编译器构建正则表达式甚至自定义语法。
    2. 动态:和boost.regex相似,以字符串作为一个表达式对象,在运行时进行语法检查和处理。
  3. 使用
    1. 不关心动态或静态:xpressive.hpp
    2. 静态方式:xpressive_static.hpp
    3. 动态方式:xpressive_dynamic.hpp
  4. basic_regex
  5. match_results
  6. sub_match
  7. 正则匹配

  1. 正则查找

  1. 正则替换
    1. regex_replace
  2. 正则迭代:regex_iterator

  1. 正则分词:regex_token_iterator

断言

assert

  1. BOOST_ASSERT
  2. BOOST_ASSERT_MSG

禁用断言

  1. 定义这个宏之后,将导致BOOST_ASSERT的行为发生改变。
    如果断言失败,会发生一个断言失败的函数调用boost::assertion_failed()或assertion_failed_msg().会把断言表达式字符串,函数名字,所在源文件名以及行号都传递给这个函数处理。
    需要用户自己实现assertion_failed函数。(以恰当的方式处理,或者通常是记录到文件中去)

static_assert

  1. 把断言的诊断时机由运行期提前到编译期,让编译器检查可能发生的错误。
  2. BOOST_STAIC_ASSERT
  3. BOOST_STATIC_ASSET_MSG

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

bingliaolong
Bingliaolong 关注:0    粉丝:0 最后编辑于:2021-11-20
Everything will be better.

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享