记录打CF遇到的新函数

  1. __gcd()函数 (注意是两个下划线) 相遇Codeforces Round #587 (Div. 3)

__gcd是内置于 algorithm 头文件中的函数,主要是用于求两个数的最大公约数,这是这个函数int、long long类型都可以,类型必须相同,而且浮点数不行。

#include
#include
using namespace std;
int main()
{
    int a,b;
    cin>>a>>b;
    cout<<__gcd(a,b)<<endl;
    return 0;
}

2.accumulate

accumulate是内置于 numeric 头文件中的函数,可用于累加求和。

accumulate带有三个形参:头两个形参指定要累加的元素范围,第三个形参则是累加的初值。
accumulate函数将它的一个内部变量设置为指定的初始值,然后在此初值上累加输入范围内所有元素的值。accumulate算法返回累加的结果,其返回类型就是其第三个实参的类型。

int sum = accumulate(vec.begin() , vec.end() , n);

可以使用accumulate把string型的vector容器中的元素连接起来:

string sum = accumulate(v.begin() , v.end() , string(" "));

从空字符串开始,把vec里的每个元素连接成一个字符串。

3.lower_bound( begin,end,num) 相遇10.1 Codeforces Round #590 (Div.3)

从数组的begin位置到end-1位置二分查找第一个大于或等于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。

举个栗子:

	auto it=s[i].lower_bound(l);
	if(it==s[i].end() or *it>r) continue;
	ans++;

4.atoi() 原型: int atoi(const char *str );

函数功能:把字符串转换成整型数。

参数str:要进行转换的字符串

返回值:每个函数返回 int 值,此值由将输入字符作为数字解析而生成。 如果该输入无法转换为该类型的值,则atoi的返回值为 0。

注意:使用该函数时要注意atoi返回的是int类型,注意输入str的范围不要超出int类型的范围。

	int a;
    char *s = "-12345";
  	a = atoi(s);

5.__builtin_popcountll
10.26 Codeforces Round #596 (Div. 2, based on Technocup 2020 Elimination Round 2) C题
计算一个 32 位无符号整数有多少个位为1
例如

int n=__builtin_popcountll(p);

你可能感兴趣的:(C++,STL,CF,函数)