C++中不熟的函数
1.memset()
头文件:<string.h>
void *memset(void *s,int c,unsigned long n);
为指针变量s所指的前n个字节的内存单元填充给定的int型数值c
如:
int a[10];
memset(a,0,sizeof(a)); //将数组a中的数全部赋值为0
2.sort()
(1)对于数组:
sort(a,a+length);//默认升序
sort(a,a+length,greater<int>())//从大到小排序
sort(a,a+length,cmp);//cmp是自己编写的函数bool cmp(int x,int y){return x>y;
}
(2)对于容器
sort(v.begin(),v.end());//默认升序
sort(v.begin,v.end(),greater<int>());//降序排序
sort(v.begin,v.end(),cmp);//使用自定义的函数排序,和上面的类似
3.accumulate()
#include<numeric>
//前两个参数是累加的元素范围 第三个参数是累加和的初值
int sum = accumulate(vec.begin() , vec.end() , 42);
4.find()
//target为目标值
vector<int>::iterator result = find(vec.begin(), vec.end(), target);
if(result == vec.end()){//不存在
}else{//存在
}
5.min_element()和max_element()
参考:
Min_element和Max_element函数
用于查找数组或容器的最值
返回迭代器,若要知道位置,则需减去起始位置
#include<iostream>
#include<algorithm> // 函数头文件
using namespace std;int main(){//数组int a[3] = {3, 1, 2};cout << "元素内最大值的位置为: " << max_element(a, a + 3) - a << endl;cout << "元素内最大值的值为: " << * max_element(a, a + 3) << endl;cout << "元素内最小值的位置为: " << min_element(a, a + 3) - a << endl;cout << "元素内最小值的值为: " << * min_element(a, a + 3) << endl;//字符串string s = "312";cout << "元素内最大值的位置为: " << max_element(s.begin(), s.end()) - s.begin() << endl;cout << "元素内最大值的值为: " << * max_element(s.begin(), s.end()) << endl;cout << "元素内最小值的位置为: " << min_element(s.begin(), s.end()) - s.begin() << endl;cout << "元素内最小值的值为: " << * min_element(s.begin(), s.end()) << endl;//容器vector<int> v ={3, 1, 2};cout << "元素内最大值的位置为: " << max_element(v.begin(), v.end()) - v.begin() << endl;cout << "元素内最大值的值为: " << * max_element(v.begin(), v.end()) << endl;cout << "元素内最小值的位置为: " << min_element(v.begin(), v.end()) - v.begin() << endl;cout << "元素内最小值的值为: " << * min_element(v.begin(), v.end()) << endl;
}
参考资料:
- C++小知识
- Min_element和Max_element函数