开篇文章记录一下C++在算法竞赛中好用的一些小技巧。

// string转int
int num = atoi(str.c_str());
// 数组最大元素
int maxElement = *max_element(arr.begin(), arr.end());
// 数组最大元素下标
int *p = max_element(arr.begin(), arr.end()) - arr.begin();
// 数组最小元素
int minElement = *min_element(arr.begin(), arr.end());
// 判断是否是数字
if(isdigit(c))
// 计算一个数二进制形式数位中1的个数
__builtin_popcount(n)
// 用数组初始化set
// unordered_set也可以
set<int> myset(arr,arr+n)
// 两个集合求交集
// 结果返回在ans数组里
set_intersection(
            set1.begin(), set1.end(), 
            set2.begin(), set2.end(), 
            back_inserter(ans)
        );
// 判断一个整数是否是2的n次幂
(number & number - 1) == 0