常用函数

四舍五入

#include <cmath>
int res = round(2 / 3.0);

结构体

初始化构造函数

如果要重载构造函数的话,需要手动写一下默认的构造函数,否则会报错

struct Student {
    string id;
    int total, cnt;
    int grade[6];
    
    // 如果要写初始化函数 必须写无餐构造函数
    Student() {}

    // 根据 id 初始化学生
    Student(string u_id) {
        id = u_id;
        total = cnt = 0;
        for (int i = 1; i <= k; i++)
            grade[i] = -2;
    }
};

重载比较符号

struct Student {
    string id;
    int total, cnt;
    int grade[6];

    // 排序规则
    bool operator<(const Student &t) const {
        if (total != t.total) return total > t.total;
        if (cnt != t.cnt) return cnt > t.cnt;
        return id < t.id;
    }
};

自定义函数(调用方法类似于Java)

struct Student {
    string id;
    int total, cnt;
    int grade[6];

    // 计算 cnt 和 total
    void cal() {
        for (int i = 1; i <= k; i++) {
            if (grade[i] == p_score[i])
                cnt++;
            total += max(0, grade[i]);
        }
    }

    // 判断是否属于输出条件
    bool has_submit() {
        for (int i = 1; i <= k; i++)
            if (grade[i] >= 0) return true;
        return false;
    }
    
};

调用时:

unordered_map<string, Student> student;
vector<Student> res;
    for (auto &x:student)
        if (x.second.has_submit()) {	// 调用
            x.second.cal();		// 调用
            res.push_back(x.second);
        }

STL容器

vector

翻转

reverse(v.begin(), v.end());

遍历

vector<Student> student;
for (auto &x:student) {		// 带上引用可以避免重复复制,降低时间成本消耗
}

for(int i = 0; i < student.size(); i++) {	// 根据下标遍历
	cout << student[i].name << endl;
}

unordered_map

查找效率 O(1),涉及到查找操作,都可以使用hash表进行处理,会降低时间成本消耗

新建 / 插入一个 key-value

string id;
unordered_map<string, Student> student;
student[id] = {id, name, grade};

遍历

unordered_map<string, Student> student;
for (auto &x:student) {		// 带上引用可以避免重复复制,降低时间成本消耗
}

string

截取字符串

string line = "1: infomation";
string info = line.substr(3);	// 表示从line[3]开始截取一直到line的末尾
string info = line.substr(3,3);	// 表示从line[3]开始截取长度为3的字符串
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐