cpp标准库函数总结

在解题中总是记不住那些复杂又难懂的cpp标准库函数用法,于是痛下决心写一个简单的总结记录下遇到过的常见用法(这该死的脑子总是不够用😭)

1. 容器相关

std::vector

  • 功能:动态数组,可根据需要自动调整大小。
  • 常用操作
    • push_back():在向量末尾添加元素。
    • pop_back():移除向量末尾的元素。
    • size():返回向量中元素的数量。
    • empty():判断向量是否为空。
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      #include <iostream>
      #include <vector>

      int main() {
      std::vector<int> vec;
      vec.push_back(1);
      vec.push_back(2);
      std::cout << "Size: " << vec.size() << std::endl;
      vec.pop_back();
      std::cout << "Is empty: " << (vec.empty() ? "Yes" : "No") << std::endl;
      return 0;
      }

std::stack

  • 功能:实现后进先出(LIFO)的数据结构。
  • 常用操作
    • push():将元素压入栈顶。
    • pop():移除栈顶元素。
    • top():返回栈顶元素的引用。
    • empty():判断栈是否为空。
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      #include <iostream>
      #include <stack>

      int main() {
      std::stack<int> st;
      st.push(1);
      st.push(2);
      std::cout << "Top: " << st.top() << std::endl;
      st.pop();
      std::cout << "Is empty: " << (st.empty() ? "Yes" : "No") << std::endl;
      return 0;
      }

std::queue

  • 功能:实现先进先出(FIFO)的数据结构。
  • 常用操作
    • push():将元素加入队列尾部。
    • pop():移除队列头部元素。
    • front():返回队列头部元素的引用。
    • empty():判断队列是否为空。
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      #include <iostream>
      #include <queue>

      int main() {
      std::queue<int> q;
      q.push(1);
      q.push(2);
      std::cout << "Front: " << q.front() << std::endl;
      q.pop();
      std::cout << "Is empty: " << (q.empty() ? "Yes" : "No") << std::endl;
      return 0;
      }

std::priority_queue

  • 功能:优先队列,元素按照优先级排序,默认最大元素在队首。
  • 常用操作
    • push():插入元素到优先队列中。
    • pop():移除队首元素。
    • top():返回队首元素的引用。
    • empty():判断优先队列是否为空。
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      #include <iostream>
      #include <queue>

      int main() {
      std::priority_queue<int> pq;
      pq.push(3);
      pq.push(1);
      pq.push(2);
      std::cout << "Top: " << pq.top() << std::endl;
      pq.pop();
      std::cout << "New top: " << pq.top() << std::endl;
      return 0;
      }

关于序列式容器在 OI Wiki 上有比较详细的介绍: 序列式容器

2. 算法相关

std::sort

  • 功能:对指定范围内的元素进行排序,默认升序。
  • 常用操作
    • 可传入自定义比较函数实现降序或其他排序规则。
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      #include <iostream>
      #include <vector>
      #include <algorithm>

      bool compare(int a, int b) {
      return a > b;
      }

      int main() {
      std::vector<int> vec = {3, 1, 2};
      std::sort(vec.begin(), vec.end()); // 升序
      for (int num : vec) {
      std::cout << num << " ";
      }
      std::cout << std::endl;
      std::sort(vec.begin(), vec.end(), compare); // 降序
      for (int num : vec) {
      std::cout << num << " ";
      }
      std::cout << std::endl;
      return 0;
      }

std::sort不仅支持std:vector,同样支持std::dequestd::array、甚至是普通的 C 风格数组(需传入数组的起始地址和结束地址)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
// deque
#include <iostream>
#include <deque>
#include <algorithm>

int main() {
std::deque<int> deq = {3, 1, 2};
std::sort(deq.begin(), deq.end());
for (int num : deq) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
// array
#include <iostream>
#include <array>
#include <algorithm>

int main() {
std::array<int, 3> arr = {3, 1, 2};
std::sort(arr.begin(), arr.end());
for (int num : arr) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
//普通c语言数组
#include <iostream>
#include <algorithm>

int main() {
int arr[] = {3, 1, 2};
int size = sizeof(arr) / sizeof(arr[0]);
std::sort(arr, arr + size);
for (int i = 0; i < size; i++) {
std::cout << arr[i] << " ";
}
std::cout << std::endl;
return 0;
}
  • 功能:在有序序列中进行二分查找,判断元素是否存在。
  • 返回值:如果找到元素返回 true,否则返回 false
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include <iostream>
    #include <vector>
    #include <algorithm>

    int main() {
    std::vector<int> vec = {1, 2, 3, 4, 5};
    bool found = std::binary_search(vec.begin(), vec.end(), 3);
    std::cout << "Is 3 found: " << (found ? "Yes" : "No") << std::endl;
    return 0;
    }

std::lower_boundstd::upper_bound

  • 功能
    • std::lower_bound:返回有序序列中第一个不小于给定值的元素的迭代 器。
    • std::upper_bound:返回有序序列中第一个大于给定值的元素的迭代 器。
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      #include <iostream>
      #include <vector>
      #include <algorithm>

      int main() {
      std::vector<int> vec = {1, 2, 2, 3, 4};
      auto low = std::lower_bound(vec.begin(), vec.end(), 2);
      auto up = std::upper_bound(vec.begin(), vec.end(), 2);
      std::cout << "Lower bound index: " << low - vec.begin() << std::endl;
      std::cout << "Upper bound index: " << up - vec.begin() << std::endl;
      return 0;
      }

3. 字符串相关

std::to_string

  • 功能:将基本数据类型转换为字符串。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include <iostream>
    #include <string>

    int main() {
    int num = 123;
    std::string str = std::to_string(num);
    std::cout << "Converted string: " << str << std::endl;
    return 0;
    }

std::stoistd::stolstd::stoll

  • 功能:将字符串转换为整数类型,分别对应 intlonglong long
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include <iostream>
    #include <string>

    int main() {
    std::string str = "123";
    int num = std::stoi(str);
    std::cout << "Converted integer: " << num << std::endl;
    return 0;
    }

4. 数学相关

std::maxstd::min

  • 功能:返回两个值中的最大值或最小值。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include <iostream>
    #include <algorithm>

    int main() {
    int a = 1, b = 2;
    std::cout << "Max: " << std::max(a, b) << std::endl;
    std::cout << "Min: " << std::min(a, b) << std::endl;
    return 0;
    }

std::abs

  • 功能:返回一个数的绝对值。
    1
    2
    3
    4
    5
    6
    7
    8
    #include <iostream>
    #include <cmath>

    int main() {
    int num = -5;
    std::cout << "Absolute value: " << std::abs(num) << std::endl;
    return 0;
    }

cpp标准库函数总结
http://jrhu0048.github.io/2025/05/07/suan-fa-shua-ti/cpp-biao-zhun-ku-han-shu-zong-jie/
作者
JR.HU
发布于
2025年5月7日
更新于
2025年5月7日
许可协议