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为底的对数

hhhhh