lower_bound(arr, arr + arr.size(), val)
返回一个迭代器,返回指向大于等于val的第一个值的位置
lower_bound(arr, arr + arr.size(), val) - arr
可以得到大于等于val数值的数组下标
//升序队列,小顶堆 priority_queue <int,vector,greater > q;
//降序队列,大顶堆 priority_queue <int,vector,less >q;
std::to_string(num) 将数字转换成string
1 2 3 4 5
| isalpha(a); isdigit(1); isupper(A); islower(); _builtin_popcount(int x) 返回数字二进制下1的数目
|
数组初始化
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| int sum[100] = {0}; memset(sum, 0, sizeof(sum));
fill(sum, sum + sum.size(), 0);
vector<int> nums(17);
vector<int> nums(17, 3);
vector<int> nums(sum);
vector<int> n2(nums.begin(), nums.end());
fill(nums.begin(), nums.end(), 3)
nums.insert(nums.begin() + i, k)
nums.insert(nums.begin() + i, k, val)
nums.insert(nums.end(), val)
reverse(nums.begin(), nums.end())
|
accumulate()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| #include<iostream> #include<numeric> #include<string> #include<vector> using namespace std; int main() {
int list[10] = { 1,2,3,4,5,6,7,8,9,10 }; int sum= accumulate(list, list+10, 0) ; cout <<"和:"<<sum<<endl; int con_product = accumulate(list, list + 3, 1, multiplies<int>()); cout<<"连乘积:"<<con_product<<endl; vector<string>a{"1","-2345","+6"}; string a_sum=accumulate(a.begin(), a.end(),string("out: ")); cout<<"string合并后输出:"<<a_sum<<endl; return 0; }
|
求和时,accumulate带有三个形参:累加的元素起始地址;累加的元素结束地址,累加的初值(通常为0)。例如:
sum= accumulate(list, list+10, 0) ;得出sum=55.
如果sum= accumulate(list, list+3, 0) ;得出sum=6.
如果sum= accumulate(list, list+3, 100) ;得出sum=106.
求连乘积时,accumulate带有四个形参:连乘的元素起始地址;连乘的元素结束地址,连乘的初值(通常为1)。例如:
con_product= accumulate(list, list+3, 1, multiplies()) ;得出sum=6.
如果con_product= accumulate(list, list+3, 10, multiplies()) ;得出sum=60.
求string合并,
string a_sum=accumulate(a.begin(), a.end(),string(“out: “));得到out: 1-2345+6