第十四课 头文件与标准库速查

常用头文件标准库函数速查表,便于查阅。

  1. iostream(输入输出)
#include <iostream>
using namespace std;

int main() {
    // 基本输出
    cout << "Hello" << endl;     // 输出字符串+换行
    cout << 123 << endl;         // 输出数字
    cout << 3.14 << endl;        // 输出浮点数

    // 基本输入
    int num;
    cin >> num;                  // 从键盘读取整数

    string name;
    cin >> name;                 // 读取字符串(不含空格)

    // 连续输入输出
    int a, b;
    cin >> a >> b;
    cout << a << " " << b << endl;

    // 格式化输出
    cout << hex << 255 << endl;    // ff(十六进制)
    cout << oct << 255 << endl;    // 377(八进制)
    cout << dec << 255 << endl;   // 255(十进制)

    cout << endl;     // 换行
    cout << "\t";     // 制表符

    return 0;
}
  1. string(字符串)
#include <iostream>
#include <string>
using namespace std;

int main() {
    string s = "Hello";

    // 长度相关
    s.length();    // 字符串长度
    s.size();     // 同length
    s.empty();    // 是否为空

    // 访问
    s[0];         // 下标访问
    s.at(0);      // 带边界检查的访问

    // 修改
    s += " World";   // 拼接
    s.append("!");   // 追加
    s.push_back('!'); // 追加字符
    s.pop_back();    // 删除最后一个字符
    s.clear();       // 清空

    // 子串
    s.substr(0, 5);    // 从位置0开始,长度5
    s.substr(6);       // 从位置6到末尾

    // 查找
    s.find("lo");        // 查找子串位置
    s.rfind("lo");       // 从后往前找
    s.find_first_of("aeiou");  // 第一个元音字母位置

    // 替换
    s.replace(0, 5, "Hi");   // 从位置0替换5个字符为"Hi"

    // 比较
    s == "Hello";    // 比较
    s.compare("Hello");  // 返回0相等,负数小于,正数大于

    // 插入删除
    s.insert(5, " World");   // 插入
    s.erase(5, 6);           // 从位置5删除6个字符

    // 大小写转换
    #include <cctype>
    char c = 'A';
    c = tolower(c);  // 转小写
    c = toupper(c);  // 转大写

    return 0;
}
  1. vector(动态数组)
#include <iostream>
#include <vector>
using namespace std;

int main() {
    vector<int> v;

    // 添加
    v.push_back(1);  // 末尾添加
    v.emplace_back(2); // C++11原地构造

    // 插入
    v.insert(v.begin() + 1, 100);  // 在位置1插入100

    // 删除
    v.pop_back();      // 删除最后一个
    v.erase(v.begin()); // 删除第一个

    // 大小
    v.size();      // 元素个数
    v.capacity();  // 容器容量
    v.empty();     // 是否为空

    // 访问
    v[0];         // 下标访问
    v.at(0);      // 带边界检查
    v.front();    // 第一个元素
    v.back();     // 最后一个元素

    // 其他
    v.clear();    // 清空
    v.resize(10); // 调整大小
    v.reserve(100); // 预留容量

    return 0;
}
  1. map(映射)
#include <iostream>
#include <map>
#include <string>
using namespace std;

int main() {
    map<string, int> m;

    // 插入
    m["apple"] = 5;
    m.insert(make_pair("banana", 3));
    m.insert({"orange", 8});
    m.emplace("grape", 6);

    // 访问
    m["key"];           // 如果key不存在会插入并返回默认值
    m.at("key");        // 如果key不存在会抛异常

    // 查找
    m.find("apple");    // 返回迭代器
    m.count("apple");   // 返回0或1

    // 删除
    m.erase("apple");   // 按key删除
    m.erase(it);        // 按迭代器删除

    // 遍历
    for (auto &p : m) {
        p.first;   // 键
        p.second;  // 值
    }

    // 其他
    m.size();      // 元素个数
    m.empty();     // 是否为空
    m.clear();     // 清空

    return 0;
}
  1. algorithm(算法)
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int main() {
    vector<int> v = {5, 2, 8, 1, 9, 3};

    // 排序
    sort(v.begin(), v.end());           // 升序
    sort(v.begin(), v.end(), greater<int>()); // 降序

    // 逆序
    reverse(v.begin(), v.end());

    // 查找
    find(v.begin(), v.end(), 5);         // 查找元素
    find_if(v.begin(), v.end(), [](int x){return x > 5;}); // 条件查找

    // 最大最小
    *max_element(v.begin(), v.end());
    *min_element(v.begin(), v.end());

    // 计数
    int cnt = count(v.begin(), v.end(), 5);

    // 交换
    swap(v[0], v[1]);

    // 填充
    fill(v.begin(), v.end(), 0);

    // 复制
    vector<int> v2;
    copy(v.begin(), v.end(), back_inserter(v2));

    // 去重(需要先排序)
    sort(v.begin(), v.end());
    v.erase(unique(v.begin(), v.end()), v.end());

    return 0;
}
  1. cmath(数学函数)
#include <iostream>
#include <cmath>
using namespace std;

int main() {
    // 绝对值
    abs(-5);      // 5(整数)
    fabs(-3.14);  // 3.14(浮点数)

    // 幂和根
    pow(2, 3);    // 8.0(2的3次方)
    sqrt(16);     // 4.0(平方根)
    cbrt(27);     // 3.0(立方根)

    // 三角函数
    sin(0);       // 正弦
    cos(0);       // 余弦
    tan(0);       // 正切

    // 反三角函数
    asin(0);      // 反正弦
    acos(0);      // 反余弦
    atan(0);      // 反正切

    // 对数和指数
    log(e);       // 1.0(自然对数)
    log10(10);    // 1.0(常用对数)
    exp(1);       // e

    // 取整
    floor(3.7);   // 3.0(向下取整)
    ceil(3.2);    // 4.0(向上取整)
    round(3.5);   // 4.0(四舍五入)
    trunc(3.7);   // 3.0(截断取整)

    // 取余
    fmod(10, 3);  // 1.0(浮点数取余)

    return 0;
}
  1. ctime(时间)
#include <iostream>
#include <ctime>
using namespace std;

int main() {
    // 获取当前时间
    time_t now = time(nullptr);
    cout << now << endl;  // 时间戳(秒)

    // 转换为本地时间
    tm *ltm = localtime(&now);
    cout << "年:" << 1900 + ltm->tm_year << endl;
    cout << "月:" << 1 + ltm->tm_mon << endl;
    cout << "日:" << ltm->tm_mday << endl;
    cout << "时:" << ltm->tm_hour << endl;
    cout << "分:" << ltm->tm_min << endl;
    cout << "秒:" << ltm->tm_sec << endl;

    // 格式化时间
    char buf[100];
    strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", ltm);
    cout << buf << endl;  // 2024-01-01 12:00:00

    // 计算时间差
    time_t t1, t2;
    t1 = time(nullptr);
    // 执行一些操作...
    t2 = time(nullptr);
    cout << "相差:" << difftime(t2, t1) << "秒" << endl;

    return 0;
}
  1. cstdlib(常用工具)
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

int main() {
    // 随机数
    srand(time(nullptr));  // 随机数种子
    int r = rand();        // 0~RAND_MAX之间的随机数
    r = rand() % 100;      // 0~99

    // 生成范围[a,b]的随机数
    int r2 = rand() % (b - a + 1) + a;

    // C++11随机数
    #include <random>
    random_device rd;
    mt19937 gen(rd());
    uniform_int_distribution<int> dis(1, 100);
    int r3 = dis(gen);  // 1~100的随机整数

    // 退出程序
    // exit(0);  // 正常退出
    // exit(1);  // 异常退出

    // 字符串转换
    atoi("123");     // 字符串转int
    atof("3.14");    // 字符串转double
    atol("123456");  // 字符串转long

    // 排序(简单)
    // qsort(array, n, sizeof(type), compare);

    return 0;
}

类似文章

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注