string
bool s.empty()
s.size()
char c = s[n]
vector
vector<T> v;
v.empty()
v.size()
v.push_back(v1)
//vector迭代器
for(vector<int>::iterator it = v.begin(); it != v.end(); ++it){
*it = 0;
}
//数组a[]
for(int *p = a; p != a+n; p++){
cout<<*p;
}
algorithm
- count()
统计给定值或字符的个数
char c[40] = "Hello world! hwi";
int cLen = count(c, c + strlen(c), 'l'); //---->> 3
string str = "abcddddd";
int strLen = count(str.begin(), str.end(), 'd');//---->> 5
- find()
找到字串的位置
int pre = str.find("l");
int end = str.rfind("l");
- swap()
交换两个对象的值,用处很广,无论交换两个整型,还是两个字符数组,非常实用
char c1[50] = "Hello world!";
char c2[50] = "hih";
swap(c1, c2); //字符数组存储发生交换
int n1=5;
int n2=6;
swap(n1,n2);//数字发生交换
- reverse()
反转排序指定范围中的元素。
char c[50] = "Hello world!";
reverse(c, c + strlen(c));// c------>>"!dlrow olleH"
int a[5] = {1, 2, 3, 6};
reverse(a, a + 4);// a[5]---->>[6,3,2,1,0]
- sort()
1.重写comp
bool comp(int a, int b) {
return a > b;
}
int a[10] = {1, 3, 6, 2, 5, 8, 1, 2, 10, 2};
sort(a, a + 10); //升序排列
sort(a, a + 10, comp);//降序排列
2.struct重载运算符
struct Friend {
string name;
int age;
bool operator<(const Friend &f) {
return this->age < f.age;
}
} friends[14];
sort(friends + 1, friends + n + 1);
- max/min
int a[10] = {1, 3, 4, 2, 5, 8, 1, 2, 10, 2};
int *n = max_element(a, a + 10);//结果:10
int *m = min_element(a, a + 10);//结果:1
int nn = min(a[0], a[2]); //结果:1
int mm = max(1, 5); //结果:5
- unique()
删除指定范围中的所有连续重复元素,仅仅留下每组等值元素中的第一个元素。注意两点,第一点,该函数仅是处理元素连续重复的情况,而不是整个指定范围中重复的元素。所以如果想移除整个整个范围重复元素,先进行排序然后再调用该函数。
第二点,unique并不是真正的把重复的元素删除,其实是,该函数把重复的元素移到后面去了,然后依然保存到了原数组中。
函数返回去重后最后一个元素之后一个元素的地址。
string str = "abcdddddbccccd";
string::iterator rel = unique(str.begin(), str.end()); //rel="dbccccd",str ="abcdbcdbccccd"
int a[10] = {0, 1, 1, 2, 2, 2, 3, 4, 4};
int w = unique(a + 1, a + 9) - a - 1;//w是去重后有多少个不同的元素--->>4
- _countof()
计算数组的长度
int a[10] = {2, 2, 8};
int d=_countof(a);//d--->>10
cmath
double sqrt(double); // 开平方
int abs(int i); // 求整型的绝对值
double fabs(double);// 求实型的绝对值
double pow(double x, double y);//计算x的y次幂
double ceil (double); //向上取整
double floor (double); //向下取整
double d, c;
c = modf(3.67, &d);//c--->>0.67 d--->>3 将参数的整数部分通过指针回传,返回小数部分
double e = fmod(5.6, 2); // e--->>1.6 返回两参数相除的余数
double exp(double); // 求取自然数e的幂
double log(double); // 以e为底的对数
double log10(double); // 以10为底的对数
Comments | 0 条评论