C++STL
内容纲要

(1) vector(动态数组)

特点

  • 动态大小,类似 array,但可以自动扩容。
  • 随机访问快(O(1)),但在中间插入/删除较慢(O(n))。

主要函数

函数 作用 返回值类型 返回值描述
push_back(x) 在末尾插入元素 void 无返回值
pop_back() 删除末尾元素 void 无返回值
front() / back() 返回首/尾元素 T& / const T& 返回首/尾元素的引用
at(i) 访问索引 i 处的元素(带边界检查) T& / const T& 返回索引 i 处的元素(带边界检查)
operator[i] 访问索引 i 处的元素(无边界检查) T& / const T& 返回索引 i 处的元素(无边界检查)
size() / capacity() 获取大小 / 容量 size_t 返回元素个数 / 容量
insert(it, x) 在迭代器 it 处插入 x iterator 返回插入位置的迭代器
erase(it) 删除迭代器 it 指向的元素 iterator 返回删除元素后的下一个迭代器
clear() 清空所有元素 void 无返回值

🔹 示例

#include <iostream>
#include <vector>
using namespace std;
int main() {
    vector<int> v = {1, 2, 3};
    v.push_back(4);  // {1, 2, 3, 4}
    v.pop_back();     // {1, 2, 3}
    cout << v[1] << endl; // 2
}

(2) deque(双端队列)

特点

  • 支持两端插入/删除push_frontpush_back)。
  • vector 更适合频繁头部插入/删除

主要函数

函数 作用 返回值类型 返回值描述
push_front(x) / push_back(x) 头/尾部插入元素 void 无返回值
pop_front() / pop_back() 头/尾部删除元素 void 无返回值
front() / back() 访问首/尾元素 T& / const T& 返回首/尾元素的引用
operator[i] 访问索引 i 处的元素 T& / const T& 返回索引 i 处的元素
size() / clear() 获取大小 / 清空所有元素 size_t / void 返回队列大小 / 无返回值

🔹 示例

#include <deque>
#include <iostream>
using namespace std;
int main() {
    deque<int> dq = {1, 2, 3};
    dq.push_front(0); // {0, 1, 2, 3}
    dq.pop_back();    // {0, 1, 2}
    cout << dq.front() << endl; // 0
}

queue(普通队列,FIFO)

特点

  • 先进先出(FIFO):先插入的元素先取出。
  • 底层实现:通常基于 deque(双端队列)。

    常用函数

函数 作用 返回值类型 返回值描述
push(x) 入队,在队尾添加元素 void 无返回值
pop() 出队,删除队头元素 void 无返回值
front() 返回队头元素 T& / const T& 返回队头元素的引用
back() 返回队尾元素 T& / const T& 返回队尾元素的引用
size() 返回队列大小 size_t 返回队列大小
empty() 判断队列是否为空 bool 若队列为空返回 true,否则返回 false

(3) list(双向链表)

特点

  • 插入/删除快(O(1)),但不支持随机访问(O(n))。
  • 适用于频繁增删的场景。

主要函数

函数 作用 返回值类型 返回值描述
push_front(x) / push_back(x) 头/尾部插入元素 void 无返回值
pop_front() / pop_back() 头/尾部删除元素 void 无返回值
insert(it, x) 在迭代器 it 位置插入 x iterator 返回插入位置的迭代器
erase(it) 删除迭代器 it 指向的元素 iterator 返回删除元素后的下一个迭代器
sort() 排序所有元素 void 无返回值

🔹 示例

#include <list>
#include <iostream>
using namespace std;
int main() {
    list<int> l = {1, 2, 3};
    l.push_front(0); // {0, 1, 2, 3}
    l.pop_back();    // {0, 1, 2}
}

(4) set(集合,自动排序)

特点

  • 元素唯一,自动按升序排列。
  • 查找 O(log n),插入/删除 O(log n)

主要函数

函数 作用 返回值类型 返回值描述
insert(x) 插入 x pair<iterator, bool> 返回插入位置的迭代器和是否插入成功(bool 值)
erase(x) 删除 x size_t 返回删除的元素个数
count(x) 判断 x 是否存在(返回 0/1 size_t x 存在则返回 1,否则返回 0
find(x) 查找元素 x iterator 返回 x 的迭代器,若不存在返回 end()
lower_bound(x) 返回 ≥ x 的最小元素的迭代器 iterator 返回 ≥ x 的最小元素的迭代器
upper_bound(x) 返回 > x 的最小元素的迭代器 iterator 返回 > x 的最小元素的迭代器

🔹 示例

#include <set>
#include <iostream>
using namespace std;
int main() {
    set<int> s = {3, 1, 4};
    s.insert(2); // {1, 2, 3, 4}
    s.erase(3);  // {1, 2, 4}
}

(5) map(键值对映射,自动排序)

特点

  • 键唯一,按键升序存储。
  • 使用 O(log n) 查找、插入。

主要函数

函数 作用 返回值类型 返回值描述
m[key] = value 插入/修改键值对 T& 插入或修改键值对,返回值为对应键的引用
insert({key, value}) 插入键值对(不会覆盖已存在的键) pair<iterator, bool> 返回插入位置的迭代器和是否插入成功(bool 值)
erase(key) 删除键值对 size_t 返回删除的元素个数
find(key) 查找键值对 iterator 返回 key 的迭代器,若不存在返回 end()
count(key) 判断 key 是否存在 size_t key 存在则返回 1,否则返回 0
lower_bound(key) 返回 ≥ key 的最小元素 iterator 返回 ≥ key 的最小元素的迭代器
upper_bound(key) 返回 > key 的最小元素 iterator 返回 > key 的最小元素的迭代器

🔹 示例

#include <map>
#include <iostream>
using namespace std;
int main() {
    map<string, int> m;
    m["apple"] = 10;
    cout << m["apple"] << endl; // 10
}

(6) Pair

pair 是一个模板类,它允许我们创建一个存储两个不同类型元素的对象。pair 类模板的定义如下:

template <class T1, class T2>
struct pair {
    T1 first;
    T2 second;
    pair();
    pair(const T1& a, const T2& b);
    pair(const pair& p);
    pair(pair&& p);
};
  • T1T2pair 的两个元素类型。
  • firstsecond 分别表示第一个和第二个元素。

    pair 主要函数与操作

函数 作用 返回值类型 返回值描述
first 存储 pair 中的第一个元素 T1& / const T1& 对第一个元素的引用
second 存储 pair 中的第二个元素 T2& / const T2& 对第二个元素的引用
make_pair(a, b) 创建一个 pair 对象,并用 ab 初始化它 pair<T1, T2> 返回一个 pair 对象

make_pair 函数

make_pair 是一个非常有用的函数模板,用于方便地创建 pair 对象。它会自动推断类型,因此在使用时不需要显式指定模板参数。

pair<int, string> p = make_pair(1, "apple");

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇