知识点

  • C++ R 原始字符串 R 表示方法,R是原始字符串
    原始字符串的开始符号 :R”( , 原始字符串的结束符号:)”。R” 与 ( 之间可以插入其它任意字符串。
  1. 不做任何转义
    例如下列代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    std::string str1 = "aaaaaa.\nbbbb.\ncccc.\n";

    cout << str1 <<endl;


    cout << "---------------------" <<endl;

    std::string raw_str = R"(aaaaaa\nbbbb\ncccc\n)";

    cout << raw_str <<endl;

    输出结果为

    1
    2
    3
    4
    5
    aaaaaa
    bbbb
    cccc

    aaaaaa\nbbbb\ncccc\n
  2. 可以输入多行文本

    1
    2
    3
    4
    5
    6
    7
    8
    9
    const std::string json_text = R"(
    {
    "name": "Judd Trump",
    "credits": 1754500,
    "ranking": 1
    }
    )";

    j = json.parse(json_text)
  • cin、cout与scanf、printf的区别
    如果数据范围<1e5,那么cin、cout和scanf、prinf速度差不多 但是当数据范围>1e5,那么cin、cout会比scanf、printf慢一倍或更多
  • memset函数

void memset(void str,int c,size_t n)

解释:复制字符c(一个无符号字符到参数str所指向的字符串的前n个字符)
作用:是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法。
头文件:C中#include,c++中#include
主要就是用于初始化,但是需要注意的是memset赋值的时候是按照字节赋值,是将参数化成二进制之后填入一个字节。

memset赋值不一定只能赋值为0,任意字符都是可以的。初始化成0是最常用的,int类型的一般都是赋值0或-1,其他的值都不行。

为地址str开始的n个字节赋值c,注意:是逐个字节赋值,str开始的n个字节中的每个字节都赋值为c。

  1. 若str指向char型地址,value可为任意字符值。
  2. 若str指向非char型,如int型地址,要想赋值正确,value的值只能是-1或0,因为-1和0转化成二进制后的每一位都一样,设int型占4个字节,则-1=0XFFFFFFFF,0=0X00000000。
    举例:给数组赋值-1
1
2
int A[2];  
memset(A, -1, sizeof A);

memset初始化为无穷大

1
memset(a , 0x3f , sizeof a);
  • abs函数
    函数原型:int abs(int i);
    作用:求数据的绝对值。
    头文件:c:stdlib.h c++:iostream 或 cmath 头文件中定义的