【C++】fill函数,fill与memset函数的区别

  • memset函数
    • 按照字节填充某字符
    • 在头文件<cstring>里面
  • fill函数
    • 按照单元赋值,将一个区间的元素都赋同一个值
    • 在头文件<algorithm>里面
  • 因为memset函数按照字节填充,所以一般memset只能用来填充char型数组,(因为只有char型占一个字节)如果填充int型数组,除了0和-1,其他的不能。因为只有00000000 = 0,-1同理,如果我们把每一位都填充“1”,会导致变成填充入“11111111”
  • 而fill函数可以赋值任何,而且使用方法特别简便:
    • fill(arr, arr + n, 要填入的内容);
    • 例如:

    • vector也可以:
  • 而memset的使用方法是:

【C++】用sort函数产生的段错误问题

sort函数的cmp必须按照规定来写,即必须只是 > 或者

比如:
return a b;
return a < b;

而不能是 <= 或者 >= ,(实际上等于号加了也是毫无意义,sort是不稳定的排序),否则可能会出现段错误

C++:string类中size()和length()的区别

此文献给好友风临神上(^-^)

结论是,两者没有任何区别。

解释:

C++ Reference中对于String字符串中函数size和length的解释是这样的:

size Return length of string
length Return length of string

连两者的具体解释都一样:

std::string::size

Return length of string

Returns the length of the string, in terms of bytes.
This is the number of actual bytes that conform the contents of the string, which is not necessarily equal to its storagecapacity.
Note that string objects handle bytes without knowledge of the encoding that may eventually be used to encode the characters it contains. Therefore, the value returned may not correspond to the actual number of encoded characters in sequences of multi-byte or variable-length characters (such as UTF-8).
Both string::size and string::length are synonyms and return the same value.

std::string::length

Return length of string

Returns the length of the string, in terms of bytes.
This is the number of actual bytes that conform the contents of the string, which is not necessarily equal to its storagecapacity.
Note that string objects handle bytes without knowledge of the encoding that may eventually be used to encode the characters it contains. Therefore, the value returned may not correspond to the actual number of encoded characters in sequences of multi-byte or variable-length characters (such as UTF-8).
Both string::size and string::length are synonyms and return the exact same value.

所以两者的微小区别就是:

size() 一般用作返回容器大小的方法

length() 一般用作返回一个序列的长度

string转int/float/double、int/float/double转string、转字符串数组的方法:stoi、stringstream、scanf、to_string、sprintf

一、string转化为数字

1.使用stoi

2.使用stringstream

注意:sscanf、sprintf、atoi 操作对象为 字符数组(char c[])

3.如果使用的不是string类,而是字符数组char c[]

①使用 sscanf

②使用 atoi / atol / atoll

二、数字转化为string

1.使用to_string

2.使用stringstream

3.如果是字符数组(使用sprintf)

使用setprecision控制输出流显示浮点数的有效数字个数(C++)

setprecision的头文件为:#include <iomanip>
会自动四舍五入
setprecision(n)表示显示n个有效数字
和fixed连用可以控制小数点后面输出的位数