最新资讯

  • 【STL】你的意思是用这玩意能少写很多代码?非零基础复习

【STL】你的意思是用这玩意能少写很多代码?非零基础复习

2026-02-05 07:27:18 栏目:最新资讯 11 阅读

文章目录

  • 概述
    • 算法部分
      • 一、sort
      • 二、nth_element
      • 三、lower_bound & upper_bound
      • 四、next_permutation & prev_permutation
      • 五、unique
      • 六、minmax_element
      • 七、accumulate
      • 八、其他算法(共19个)
    • 容器部分
      • 一、vector
        • 申明
        • 初始化
        • 输入/输出
        • 常用成员函数
          • 1.访问函数(Access)
          • 2.迭代器函数(Iterators)
          • 3.容量函数(Capacity)
          • 4.修改函数(Modifiers)
        • 比较运算
        • 注意事项
      • 二、queue
        • 申明
        • 初始化
        • 输入/输出
        • 常用成员函数
          • 1. 访问函数(Access)
          • 2. 容量函数(Capacity)
          • 3. 修改函数(Modifiers)
        • 注意事项
      • 三、stack
        • 申明
        • 初始化
        • 输入/输出
        • 常用成员函数
          • 1. 访问函数(Access)
          • 2. 容量函数(Capacity)
          • 3. 修改函数(Modifiers)
        • 注意事项
      • 四、deque
        • 申明
        • 初始化
        • 输入/输出
        • 常用成员函数
          • 1.访问函数(Access)
          • 2.迭代器函数(Iterators)
          • 3.容量函数(Capacity)
          • 4.修改函数(Modifiers)
        • 比较运算
        • 注意事项
      • 五、priority_queue
        • 申明
        • 初始化
        • 输入/输出
        • 常用成员函数
          • 1. 访问函数(Access)
          • 2. 容量函数(Capacity)
          • 3. 修改函数(Modifiers)
        • 注意事项
      • 六、set
        • 申明
        • 初始化
        • 输入/输出
        • 常用成员函数
          • 1. 容量函数(Capacity)
          • 2. 修改函数(Modifiers)
          • 3. 查找函数(Lookup)
          • 4. 迭代器函数(Iterators)
        • 比较运算
        • 注意事项
      • 七、multiset
        • 申明
        • 初始化
        • 常用成员函数
        • 注意事项
      • 八、unordered_set
        • 申明
        • 初始化
        • 输入/输出
        • 常用成员函数
        • 比较运算
        • 注意事项
      • 九、map
        • 申明
        • 初始化
        • 输入/输出
        • 常用成员函数
          • 1. 容量函数(Capacity)
          • 2. 修改函数(Modifiers)
          • 3. 查找函数(Lookup)
          • 4. 迭代器函数(Iterators)
        • 比较运算
        • 注意事项
      • 十、multimap
        • 申明
        • 初始化
        • 常用成员函数
        • 注意事项
      • 十一、unordered_map
        • 申明
        • 初始化
        • 输入/输出
        • 常用成员函数
        • 比较运算
        • 注意事项
    • 例题部分
      • 一、【模板】栈
      • 二、【模板】队列
      • 三、[语言月赛202303]Coin Selection G
      • 四、[语言月赛202304]你的牌太多了
      • 五、[语言月赛202304] 洛谷评测机模拟器
      • 六、 [语言月赛 202312]铅球杯
      • 七、A-B 数对
      • 八、日志分析
      • 九、瑞瑞的木板
      • 十、眼红的Medusa
      • 十一、全排列问题
      • 十二、求第 k 小的数
      • 十三、约瑟夫问题
      • 十四、查找
      • 十五、【模板】堆
      • 十六、寄包柜
      • 十七、[TJOI2010]阅读理解
      • 十八、[JLOI2011] 不重复数字
      • 十九、验证栈序列
      • 二十、[蓝桥杯 2021 省 AB2] 负载均衡


概述

C++ 标准模板库(Standard Template Library,STL)是一套功能强大的 C++ 模板类和函数的集合,它提供了一系列通用的、可复用的算法和数据结构。

本文将讲解C++11中最常用的STL及其用法,附带例题。

算法部分

一、sort

  • 作用:对指定范围内的元素进行排序,默认按升序排列,也可通过自定义比较器指定排序规则

  • 模板sort(iterator begin,interator end,function comp)

  • 复杂度 O ( n log ⁡ n ) O(nlog n) O(nlogn)

  • Function Comp:自定义比较器

  • 预定义函数对象:最常用greater< >(),用于实现降序排序

  • 代码案例

#include "bits/stdc++.h"
using namespace std;
int main() {
  vector  v1 = {9, 5, 1, 2, 4, 6, 8, 3, 0, 7};
  vector  v2 = {9, 5, 1, 2, 4, 6, 8, 3, 0, 7};
  vector  v3 = {9, 5, 1, 2, 4, 6, 8, 3, 0, 7};
  // 1.默认从小到大的升序排序
  sort(v1.begin(), v1.end());
  for (auto& x : v1){
    cout << x <<" ";
  }
  cout << endl;

  // 2.使用预定义函数对象实现降序排序
  sort(v2.begin(), v2.end(), greater ());
  //等价于sort(v2.begin(), v2.end(), [](int x, int y){return x > y;});
  for (auto& x : v2){
    cout << x <<" ";
  }
  cout << endl;

  // 3.使用自定义函数实现任意排序
  sort(v3.begin(), v3.end(), [](int a, int b) {
        // 比较奇偶性是否相同
        if ((a % 2) != (b % 2)) {
            // 奇偶性不同,奇数优先
            return (a % 2) > (b % 2);
        }
        // 奇偶性相同,按数值排序
        return a < b;
    });
    for (auto& x : v3){
    cout << x <<" ";
  }
  cout << endl;
}

二、nth_element

  • 作用:部分排序,用于重新排列元素,使得第 n 个位置的元素处于其排序后的正确位置,但不保证其他元素的完全有序。

  • 模板nth_element(Iterator begin, Iterator nth, Iterator end, fuction comp)

  • 复杂度 O ( n ) O(n) O(n)

  • Function Comp:自定义比较器

  • 预定义函数对象:最常用greater< >(),用于实现降序排序

  • 代码案例

#include "bits/stdc++.h"
using namespace std;
int main() {
    vector v1 = {5, 2, 8, 1, 9, 3, 6, 4, 7, 0};
    vector v2 = {5, 2, 8, 1, 9, 3, 6, 4, 7, 0};
    vector v3 = {5, 2, 8, 1, 9, 3, 6, 4, 7, 0};
    vector v4 = {5, 2, 8, 1, 9, 3, 6, 4, 7, 0};

    // 1.查询第五小的元素
    nth_element(v1.begin(), v1.begin() + 4, v1.end());
    cout << "第5小的元素是: " << v1[4] << endl;
    
    // 2.查找前 k 个最小元素
    nth_element(v2.begin(), v2.begin() + 3, v2.end());
    cout << "前3小的元素: ";
    for (int i = 0; i < 3; i++) {
    cout << v2[i] << " ";  // 输出: 0 1 2(不一定有序)
    }
    cout << endl;

    // 3.使用自定义预定义函数对象
    nth_element(v3.begin(), v3.begin() + 2, v3.end(), greater());
    cout << "第3大的元素是: " << v3[2] << endl;
    
    // 4.寻找中位数
    int nums = v4.size();
    if(nums % 2 != 0){ // 数组元素个数为奇
    nth_element(v4.begin(), v4.begin() + nums/2, v4.end());
    }else{ // 数组元素个数为偶
        // 先找到第n/2个元素,放在位置n/2
        nth_element(v4.begin(), v4.begin() + nums/2, v4.end());
        int right_mid = v4[nums/2];
        // 再在左边部分找到第n/2-1个元素,即左边部分的最大值
        nth_element(v4.begin(), v4.begin() + nums/2 - 1, v4.begin() + nums/2);
        int left_mid = v4[nums/2 - 1];
        double median = (left_mid + right_mid) / 2.0;
        cout << "中位数: " << median << endl;
    }
}

三、lower_bound & upper_bound

  • 模板

    lower_bound(Iterator begin, Iterator end, Type v, Function comp)

    upper_bound(Iterator begin, Iterator end, Type v, Function comp)

  • 作用:用于在已排序的序列中查找元素

  • 复杂度 O ( l o g n ) O(logn) O(logn)

  • Type v:目标值

  • Function Comp:自定义比较器

  • 预定义函数对象:最常用greater< >(),用于实现降序排序

  • 代码案例

#include "bits/stdc++.h"
using namespace std;

int main() {
    vector v = {1, 2, 2, 2, 3, 4, 4, 5, 7, 9};

    // 1. lower_bound: 查找第一个 >= target 的元素位置
    int target1 = 3;
    auto lb1 = lower_bound(v.begin(), v.end(), target1);
    cout << "   第一个 >= 3 的元素位置: 索引 " << (lb1 - v.begin()) << endl;
    cout << "   对应元素值: " << *lb1 << endl << endl;

    // 2. upper_bound: 查找第一个 > target 的元素位置
    int target2 = 3;
    auto ub2 = upper_bound(v.begin(), v.end(), target2);
    cout << "   第一个 > 3 的元素位置: 索引 " << (ub2 - v.begin()) << endl;
    cout << "   对应元素值: " << *ub2 << endl << endl;

    // 3. 查找重复元素的范围
    int target3 = 2;
    auto lb3 = lower_bound(v.begin(), v.end(), target3);
    auto ub3 = upper_bound(v.begin(), v.end(), target3);
    cout << "   元素 2 的范围: [" << (lb3 - v.begin()) << ", " << (ub3 - v.begin()) << ")" << endl;
    cout << "   元素 2 的个数: " << (ub3 - lb3) << endl << endl;

    // 4. 在降序数组中查找
    vector v_desc = {9, 7, 5, 5, 5, 3, 1};
    int target5 = 5;
    auto lb5 = lower_bound(v_desc.begin(), v_desc.end(), target5, greater());
    auto ub5 = upper_bound(v_desc.begin(), v_desc.end(), target5, greater());
    cout << "   lower_bound(5) 位置: 索引 " << (lb5 - v_desc.begin()) << endl;
    cout << "   upper_bound(5) 位置: 索引 " << (ub5 - v_desc.begin()) << endl;
    cout << "   元素 5 的个数: " << (ub5 - lb5) << endl << endl;

    // 5. 检查元素是否存在
    int target6 = 4;
    cout << "5. 检查元素 4 是否存在:" << endl;
    auto it = lower_bound(v.begin(), v.end(), target6);
    if (it != v.end() && *it == target6) {
        cout << "   元素 4 存在,位置: 索引 " << (it - v.begin()) << endl;
    } else {
        cout << "   元素 4 不存在" << endl;
    }
    cout << endl;

    // 6. 查找插入位置保持有序
    int new_element = 6;
    auto insert_pos = lower_bound(v.begin(), v.end(), new_element);
    cout << "插入元素 " << new_element << " 保持有序:" << endl;
    cout << "   应该插入在索引: " << (insert_pos - v.begin()) << endl;
    v.insert(insert_pos, new_element);
    cout << "   插入后数组: ";
    for (auto& x : v) {
        cout << x << " ";
    }
    cout << endl;
    return 0;
}

四、next_permutation & prev_permutation

  • 作用:用于生成序列的下一个/上一个排列,如果已经是最后一个排列,则修改为最小或最大的排列后,返回 falseboolnext_permutationprev_permutation函数的返回值类型,用来表示是否成功生成了下一个/上一个排列。

  • 模板
    next_permutation(Iterator begin, Iterator end)
    prev_permutation(Iterator begin, Iterator end)

  • 复杂度 O ( n ) O(n) O(n)

  • 代码案例

#include "bits/stdc++.h"
using namespace std;
int main() {
    vector v1 = {1, 2, 3};
    vector v2 = {1, 2, 3};
    vector v3 = {1, 2, 3};

    // 1. 使用 next_permutation 生成所有排列
    cout << "1. 使用 next_permutation 生成所有排列:" << endl;
    int count1 = 1;
    do {
        cout << "第" << count1 << "个排列: ";
        for (auto& x : v1) {
            cout << x << " ";
        }
        cout << endl;
        count1++;
    } while (next_permutation(v1.begin(), v1.end()));
    cout << endl;
    
    // 2. 使用 prev_permutation 生成所有排列
    // 注意:使用 prev_permutation 前需要先降序排序
    sort(v2.begin(), v2.end(), greater());
    cout << "2. 使用 prev_permutation 生成所有排列:" << endl;
    cout << "   (先降序排序: ";
    for (auto& x : v2) cout << x << " ";
    cout << ")" << endl;
    int count2 = 1;
    do {
        cout << "   第" << count2 << "个排列: ";
        for (auto& x : v2) {
            cout << x << " ";
        }
        cout << endl;
        count2++;
    } while (prev_permutation(v2.begin(), v2.end()));
    cout << endl;

    // 3. 只生成下一个排列
    cout << "3. 只生成下一个排列:" << endl;
    cout << "当前排列: ";
    for (auto& x : v3) {
        cout << x << " ";
    }
    cout << endl;
    bool has_next = next_permutation(v3.begin(), v3.end());
    cout << "   下一个排列: ";
    for (auto& x : v3) {
        cout << x << " ";
    }
    cout << endl;
    // 再生成一个
    has_next = next_permutation(v3.begin(), v3.end());
    cout << "   下一个排列: ";
    for (auto& x : v3) {
        cout << x << " ";
    }
    cout << endl;
    cout << endl;

    // 4. 处理有重复元素的数组
    vector v4 = {1, 2, 2};
    cout << "4. 有重复元素 {1, 2, 2} 的排列:" << endl;
    sort(v4.begin(), v4.end());
    int count3 = 0;
    do {
        cout << "   排列" << ++count3 << ": ";
        for (auto& x : v4) {
            cout << x << " ";
        }
        cout << endl;
    } while (next_permutation(v4.begin(), v4.end()));
    cout << endl;

五、unique

  • 作用去除相邻重复元素的算法。它不真正删除元素,而是将不重复的元素移动到容器前面,并返回新的逻辑末尾。

  • 模板unique(iterator begin,iterator end, function matcher)

  • 复杂度 O ( n ) O(n) O(n)

  • fuction matcher:自定义比较函数

  • 代码案例

#include "bits/stdc++.h"
using namespace std;
int main() {
    // 注意:unique 只去除相邻的重复元素
    vector v1 = {1, 1, 2, 2, 2, 3, 3, 4, 4, 4, 5};
    vector v2 = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
    vector v3 = {1, 3, 2, 4, 6, 5, 7, 9, 8};
    vector v4 = {12, 15, 18, 23, 25, 34, 37, 45, 48};

    // 1. 默认用法:去除相邻重复元素
    cout << "1. 默认用法(去除相邻重复元素):" << endl;
    vector temp1 = v1;  // 复制一份
    auto new_end1 = unique(temp1.begin(), temp1.end());
    cout << "   去重后: ";
    for (auto it = temp1.begin(); it != new_end1; it++) {
        cout << *it << " ";
    }
    cout << endl;

    // 2. 配合sort去除所有重复元素
    cout << "2. 配合sort去除所有重复元素:" << endl;
    vector temp2 = v2;  // 复制一份
    // 第一步:排序
    sort(temp2.begin(), temp2.end());
    cout << "   排序后: ";
    for (auto& x : temp2) cout << x << " ";
    cout << endl;

    // 第二步:使用unique
    auto new_end2 = unique(temp2.begin(), temp2.end());
    // 第三步:真正删除重复元素
    temp2.erase(new_end2, temp2.end());
    cout << "   去重后: ";
    for (auto& x : temp2) cout << x << " ";
    cout << endl;
    
    // 3. 使用自定义比较函数
    cout << "3. 使用自定义比较函数(按十位数分组):" << endl;
    // 按十位数排序
    sort(v4.begin(), v4.end(), [](int a, int b) {
        return a < b;
    });
    // 十位数相同的视为"相等"
    auto new_end4 = unique(v4.begin(), v4.end(),
                          [](int a, int b) {
                              return (a / 10) == (b / 10);
                          });
    cout << "   去重后(每个十位数组保留第一个): ";
    for (auto it = v4.begin(); it != new_end4; it++) {
        cout << *it << " ";
    }
    cout << endl;

六、minmax_element

  • 作用:用于在容器中查找最小元素最大元素的位置。

  • 模板minmax_element(iterator begin, iterator end, fuction comp)

  • 复杂度 O ( n ) O(n) O(n)

  • Function Comp:自定义比较器

  • 代码案例

#include "bits/stdc++.h"
using namespace std;
int main() {
    vector v1 = {9, 5, 1, 2, 4, 6, 8, 3, 0, 7};
    vector v2 = {9, 5, 1, 2, 4, 6, 8, 3, 0, 7};
    vector v3 = {-9, 5, 1, 2, 4, 6, 8, 3, 0, 7};
    
    // 1. 查找最大元素
    auto max_it = max_element(v1.begin(), v1.end());
    cout << "   最大值: " << *max_it << endl;
    cout << "   最大值位置: 索引 " << (max_it - v1.begin()) << endl;
    cout << endl;

    // 2. 查找最小元素
    auto min_it = min_element(v2.begin(), v2.end());
    cout << "   最小值: " << *min_it << endl;
    cout << "   最小值位置: 索引 " << (min_it - v2.begin()) << endl;
    cout << endl;

    // 3. 使用自定义比较函数
    // 查找绝对值最大的元素
    auto abs_max_it = max_element(v3.begin(), v3.end(),
                                 [](int a, int b) {
                                     return abs(a) < abs(b);
                                 });
    cout << "   绝对值最大的元素: " << *abs_max_it << endl;
    cout << "   绝对值: " << abs(*abs_max_it) << endl;
    cout << "   位置: 索引 " << (abs_max_it - v3.begin()) << endl;
    cout << endl;
    
    // 4. 同时查找最小和最大值(C++11)
    auto [min_it2, max_it2] = minmax_element(v1.begin(), v1.end());
    cout << "   最小值: " << *min_it2 << " (索引: " << (min_it2 - v1.begin()) << ")" << endl;
    cout << "   最大值: " << *max_it2 << " (索引: " << (max_it2 - v1.begin()) << ")" << endl;
    cout << endl;

    // 5. 在子范围中查找
    auto sub_min = min_element(v1.begin() + 2, v1.begin() + 7);
    auto sub_max = max_element(v1.begin() + 2, v1.begin() + 7);
    cout << "   子数组: ";
    for (int i = 2; i < 7; i++) {
        cout << v1[i] << " ";
    }
    cout << endl;
    cout << "   子数组最小值: " << *sub_min << " (相对索引: " << (sub_min - v1.begin()) << ")" << endl;
    cout << "   子数组最大值: " << *sub_max << " (相对索引: " << (sub_max - v1.begin()) << ")" << endl;
    return 0;
}

七、accumulate

  • 作用:对范围内的数值进行累加,可以修改累加函数

  • 模板accumulate(iterator begin, iterator end, type init, function operator)

  • 复杂度 O ( n ) O(n) O(n)

  • Type Init:初始值

  • Function Comp:自定义比较器,案例中使用了multiplies()

  • 代码案例

#include "bits/stdc++.h"
using namespace std;
int main() {
    vector v1 = {1, 2, 3, 4, 5};
    vector v2 = {1, 2, 3, 4, 5};
    vector v3 = {1, 2, 3, 4, 5};

    // 1. 默认累加(求和)
    int sum = accumulate(v1.begin(), v1.end(), 0);
    cout << "   1+2+3+4+5 = " << sum << endl;
    cout << endl;

    // 2. 使用预定义函数对象(乘法累加)
    int product = accumulate(v2.begin(), v2.end(), 1, multiplies());
    cout << "   1×2×3×4×5 = " << product << endl;
    cout << endl;

    // 3. 使用自定义函数(绝对值累加)
    vector nums = {1, -2, 3, -4, 5};
    int abs_sum = accumulate(nums.begin(), nums.end(), 0,
        [](int total, int x) {
            return total + abs(x);
        });
    cout << "   数组: ";
    for (auto& x : nums) cout << x << " ";
    cout << endl;
    cout << "   |1| + |-2| + |3| + |-4| + |5| = " << abs_sum << endl;
    cout << endl;
    return 0;
}

八、其他算法(共19个)

  1. count()
    统计容器中等于指定值的元素个数。例如:count(v.begin(), v.end(), 5)统计值为5的元素个数。

  2. find()
    在容器中查找指定值第一次出现的位置,返回迭代器。例如:find(v.begin(), v.end(), 5)查找第一个5的位置。

  3. fill()
    将容器中指定范围内的所有元素赋值为指定值。例如:fill(v.begin(), v.end(), 0)将所有元素设为0。

  4. swap()
    交换两个变量的值。例如:swap(a, b)交换a和b的值。

  5. reverse()
    反转容器中指定范围的元素顺序。例如:reverse(v.begin(), v.end())将整个容器反转。

  6. shuffle()
    随机重排容器中元素的顺序。例如:shuffle(v.begin(), v.end(), rng)使用随机数生成器重排。

  7. max()/ min()
    返回两个值中的较大值/较小值。例如:max(a, b)返回a和b中的较大值。

  8. abs()
    计算绝对值。例如:abs(-5)返回5。

  9. exp()
    计算自然指数 e^x。例如:exp(1)返回e的1次方。

  10. log()/ log10()/ log2()
    计算对数:

    • log():自然对数(以e为底)
    • log10():常用对数(以10为底)
    • log2():二进制对数(以2为底)
  11. pow()
    计算幂运算。例如:pow(2, 3)返回2的3次方(8)。

  12. sqrt()
    计算平方根。例如:sqrt(16)返回4。

  13. sin()/ cos()/ tan()
    三角函数:

    • sin():正弦函数
    • cos():余弦函数
    • tan():正切函数
  14. asin()/ acos()/ atan()
    反三角函数:

    • asin():反正弦函数
    • acos():反余弦函数
    • atan():反正切函数
  15. sinh()/ cosh()/ tanh()
    双曲函数:

    • sinh():双曲正弦函数
    • cosh():双曲余弦函数
    • tanh():双曲正切函数
  16. asinh()/ acosh()/ atanh()
    反双曲函数:

    • asinh():反双曲正弦函数
    • acosh():反双曲余弦函数
    • atanh():反双曲正切函数
  17. ceil()/ floor()
    向上/向下取整:

    • ceil():向上取整(不小于原数的最小整数)
    • floor():向下取整(不大于原数的最大整数)
  18. round()
    四舍五入取整。例如:round(3.14)返回3,round(3.6)返回4。

  19. iota()(C++11)
    用连续递增的值填充容器。例如:iota(v.begin(), v.end(), 1)用1, 2, 3…填充容器。

容器部分

一、vector

申明
  • vector<类型名> 变量名
初始化
  1. 指定大小初始化
vector v0(5);  // 创建包含5个元素的vector
// 结果: 0 0 0 0 0
  1. 指定大小和值初始化
vector v1(5, 1);  // 创建包含5个元素的vector,每个元素为1
// 结果: 1 1 1 1 1
  1. 列表初始化
vector v2{1, 2, 3};  // 用花括号初始化列表
// 等同于vector v2 = {1, 2, 3};
// 结果: 1 2 3
  1. 拷贝初始化
vector v3(v1);  // 用v1初始化v3
// 结果: 1 1 1 1 1 (与v1相同)
  1. 移动初始化
vector v4(move(v1));  // 移动v1到v4
// v1变为空,v4获得v1的所有元素
  1. 二维vector的初始化
vector> v4(2, vector(8, 3));
// 创建2×8的二维vector,每个元素为3
// 结果: 
// 第0行: 3 3 3 3 3 3 3 3
// 第1行: 3 3 3 3 3 3 3 3
  1. 从数组初始化
int arr[] = {1, 2, 3, 4, 5};
vector v7(arr, arr + 5);  // 从数组范围初始化
// 结果: 1 2 3 4 5
  1. 从另一个vector的部分初始化
vector v8(v2.begin(), v2.begin() + 2);
// 结果: 1 2 (v2的前2个元素)
输入/输出
  • 输入
  1. 基本输入
for (int i = 0; i < n; i++) {
    int x;                // 临时变量存储输入值
    cin >> x;             // 读取一个整数
    vi.push_back(x);      // 将整数添加到 vector 末尾
}
  • 输出
  1. 索引遍历
for (int i = 0; i < vi.size(); i++) {
    cout << vi[i] << endl;  // 输出每个元素,每行一个
}
  1. 使用范围 for 循环
for (auto& x : vi) {
    cout << x << endl;  // 输出每个元素,每行一个
}
  1. 迭代器
for (auto it = vi.begin(); it != vi.end(); it++) {
    cout << *it << endl;
}
常用成员函数
1.访问函数(Access)
  1. at()
  • 功能:带边界检查的访问,如果索引越界会抛出异常
  • 用法vector.at(index)
  • 示例
vector v = {1, 2, 3, 4, 5};
cout << v.at(2) << endl;  // 输出: 3
// 若cout << v.at(10) << endl;  
// 会抛出 std::out_of_range 异常
  1. operator[](下标访问)
  • 功能:快速访问元素,不检查边界
  • 用法vector[index]
  • 示例
vector v = {1, 2, 3, 4, 5};
cout << v[2] << endl;  // 输出: 3
// cout << v[10] << endl;  // 可能崩溃或返回错误值
  1. front()
  • 功能:访问第一个元素
  • 用法vector.front()
  • 示例
vector v = {1, 2, 3, 4, 5};
cout << v.front() << endl;  // 输出: 1
  1. back()
  • 功能:访问最后一个元素
  • 用法vector.back()
  • 示例
vector v = {1, 2, 3, 4, 5};
cout << v.back() << endl;  // 输出: 5
2.迭代器函数(Iterators)
  1. begin()
  • 功能:返回指向第一个元素的迭代器
  • 用法vector.begin()
  • 示例
vector v = {1, 2, 3, 4, 5};
auto it = v.begin();
cout << *it << endl;  // 输出: 1
  1. end()
  • 功能:返回指向最后一个元素之后的迭代器
  • 用法vector.end()
  • 示例
vector v = {1, 2, 3};
for (auto it = v.begin(); it != v.end(); it++) {
    cout << *it << " ";  // 输出: 1 2 3
}
3.容量函数(Capacity)
  1. empty()
  • 功能:检查vector是否为空
  • 用法vector.empty()
  • 示例
vector v1 = {1, 2, 3};
vector v2;
cout << v1.empty() << endl;  // 输出: 0 (false)
cout << v2.empty() << endl;  // 输出: 1 (true)
  1. size()
  • 功能:返回当前元素个数
  • 用法vector.size()
  • 示例
vector v = {1, 2, 3, 4, 5};
cout << v.size() << endl;  // 输出: 5
  1. clear()
  • 功能:清空所有元素
  • 用法vector.clear()
  • 示例
vector v = {1, 2, 3, 4, 5};
cout << "清空前大小: " << v.size() << endl;  // 输出: 5
v.clear();
cout << "清空后大小: " << v.size() << endl;  // 输出: 0
  1. reserve()
  • 功能:预留空间,避免频繁重新分配内存
  • 用法vector.reserve(n)
  • 示例
vector v;
cout << "初始容量: " << v.capacity() << endl;  // 可能为0
v.reserve(100);
cout << "预留后容量: " << v.capacity() << endl;  // 至少100
4.修改函数(Modifiers)
  1. insert()
  • 功能:在指定位置插入元素
  • 用法vector.insert(position, value)
  • 示例
vector v = {1, 3, 4, 5};
auto it = v.begin() + 1;  // 指向3的位置
v.insert(it, 2);  // 在3之前插入2
// 现在v = {1, 2, 3, 4, 5}
  1. erase()
  • 功能:删除指定位置或范围的元素
  • 用法vector.erase(position)vector.erase(first, last)
  • 示例
vector v = {1, 2, 3, 4, 5};
// 删除第三个元素(3)
v.erase(v.begin() + 2);
// 现在v = {1, 2, 4, 5}
// 删除前两个元素
v.erase(v.begin(), v.begin() + 2);
// 现在v = {4, 5}
  1. resize()
  • 功能:改变vector的大小
  • 用法vector.resize(new_size)vector.resize(new_size, value)
  • 示例
vector v = {1, 2, 3};
v.resize(5);  // 增大,新元素初始化为0
// 现在v = {1, 2, 3, 0, 0}

v.resize(2);  // 缩小
// 现在v = {1, 2}
  1. push_back()
  • 功能:在末尾添加元素
  • 用法vector.push_back(value)
  • 示例
vector v = {1, 2, 3};
v.push_back(4);
v.push_back(5);
// 现在v = {1, 2, 3, 4, 5}
  1. emplace_back()
  • 功能:在末尾直接构造元素,避免拷贝
  • 用法vector.emplace_back(args...)
  • 示例
vector> v;
v.emplace_back(1, "one");  // 直接在末尾构造pair
v.push_back(make_pair(2, "two"));  // 先构造再拷贝
// 现在v = {{1, "one"}, {2, "two"}}
  1. pop_back()
  • 功能:移除末尾元素
  • 用法vector.pop_back()
  • 示例
vector v = {1, 2, 3, 4, 5};
v.pop_back();  // 移除5
v.pop_back();  // 移除4
// 现在v = {1, 2, 3}
比较运算
  1. 基本比较操作
vector v0{1, 2, 3};
vector v2{1, 2, 4};
bool result = v0 < v2;  // 比较 v0 是否小于 v2
// result = true,因为 3 < 4
  1. 支持的比较运算符
    vector 支持以下比较运算符:
  • ==:相等
  • !=:不等
  • <:小于
  • <=:小于等于
  • >:大于
  • >=:大于等于
  1. 比较规则
    比较按照字典序(lexicographical comparison)
  • 从左到右比较对应位置的元素
  • 第一个不相同的元素决定比较结果
  • 如果所有对应元素都相等,较短的 vector 较小
注意事项
  • inserterase的复杂度为 O ( n ) O(n) O(n),非必要不使用

  • push_back时间复杂度可能会卡常,数据多不建议使用

二、queue

申明
  • queue<类型名> 变量名
初始化

queue不支持直接列表初始化,通常通过以下方式初始化:

  1. 默认构造(空队列)
queue q1;  // 创建空队列
// 结果: []
  1. 用其他容器初始化
deque dq{1, 2, 3, 4, 5};
queue q2(dq);  // 用deque初始化queue
// 结果: 队首←1 2 3 4 5←队尾
  1. 用list初始化
list lst{1, 2, 3};
queue> q3(lst);  // 指定list为底层容器
// 结果: 队首←1 2 3←队尾
  1. 指定底层容器
// 默认底层容器是deque,但可以指定为list
queue> q4;  // 使用list作为底层容器
// 结果: []
输入/输出
  • 输入
    queue通常通过循环逐个元素输入
queue q;
int n, x;
cin >> n;  // 输入队列中元素个数
for (int i = 0; i < n; i++) {
    cin >> x;     // 读取一个整数
    q.push(x);    // 将整数入队
}
  • 输出
    queue只能从队首访问,要输出所有元素需要边出队边输出
// 方法1:输出并清空队列
while (!q.empty()) {
    cout << q.front() << " ";  // 输出队首元素
    q.pop();                    // 移除队首元素
}
cout << endl;

// 方法2:复制队列后输出(不破坏原队列)
queue q_copy = q;  // 复制队列
while (!q_copy.empty()) {
    cout << q_copy.front() << " ";
    q_copy.pop();
}
cout << endl;
常用成员函数
1. 访问函数(Access)
  1. front()
    • 功能:访问队首元素
    • 用法queue.front()
    • 示例
queue q;
q.push(1);
q.push(2);
q.push(3);
cout << q.front() << endl;  // 输出: 1
  1. back()
    • 功能:访问队尾元素
    • 用法queue.back()
    • 示例
queue q;
q.push(1);
q.push(2);
q.push(3);
cout << q.back() << endl;  // 输出: 3
2. 容量函数(Capacity)
  1. empty()
    • 功能:检查队列是否为空
    • 用法queue.empty()
    • 示例
queue q1;
queue q2;
q2.push(1);
cout << q1.empty() << endl;  // 输出: 1 (true)
cout << q2.empty() << endl;  // 输出: 0 (false)
  1. size()
    • 功能:返回队列中元素的个数
    • 用法queue.size()
    • 示例
queue q;
q.push(1);
q.push(2);
q.push(3);
cout << q.size() << endl;  // 输出: 3
3. 修改函数(Modifiers)
  1. push()
    • 功能:在队尾插入元素
    • 用法queue.push(value)
    • 示例
queue q;
q.push(1);  // 队列: 1
q.push(2);  // 队列: 1 2
q.push(3);  // 队列: 1 2 3
  1. emplace()
    • 功能:在队尾直接构造元素,避免拷贝
    • 用法queue.emplace(args...)
    • 示例
queue> q;
q.emplace(1, "one");     // 直接在队尾构造pair
q.push(make_pair(2, "two"));  // 先构造再拷贝
// 队列包含: {1, "one"} {2, "two"}
  1. pop()
    • 功能:移除队首元素
    • 用法queue.pop()
    • 示例
queue q;
q.push(1);
q.push(2);
q.push(3);
q.pop();  // 移除1
cout << q.front() << endl;  // 输出: 2
  1. swap()
    • 功能:交换两个队列的内容
    • 用法queue1.swap(queue2)
    • 示例
queue q1, q2;
q1.push(1);
q1.push(2);
q2.push(3);
q1.swap(q2);
// 现在q1包含: 3
// q2包含: 1 2
注意事项
  1. queue不支持迭代器访问,不能使用begin()、end()等函数

  2. queue不支持随机访问,不能通过下标访问元素

  3. queue是容器适配器,基于deque、list等容器实现

  4. 先进先出(FIFO):元素总是从队尾插入,从队首删除

三、stack

申明
  • stack<类型名> 变量名
初始化

stack不支持直接列表初始化,通常通过以下方式初始化:

  1. 默认构造(空栈)
stack s1;  // 创建空栈
// 结果: [] (栈顶在右)
  1. 用其他容器初始化
deque dq{1, 2, 3, 4, 5};
stack s2(dq);  // 用deque初始化stack
// 结果: 栈底←1 2 3 4 5←栈顶
  1. 用vector初始化
vector vec{1, 2, 3};
stack> s3(vec);  // 指定vector为底层容器
// 结果: 栈底←1 2 3←栈顶
  1. 用list初始化
list lst{1, 2, 3};
stack> s4(lst);  // 指定list为底层容器
// 结果: 栈底←1 2 3←栈顶
  1. 指定底层容器
// 默认底层容器是deque,但可以指定为vector或list
stack> s5;  // 使用vector作为底层容器
// 结果: []
输入/输出
  • 输入
    stack通常通过循环逐个元素输入
stack s;
int n, x;
cin >> n;  // 输入栈中元素个数
for (int i = 0; i < n; i++) {
    cin >> x;     // 读取一个整数
    s.push(x);    // 将整数压栈
}
  • 输出
    stack只能从栈顶访问,要输出所有元素需要边出栈边输出
// 方法1:输出并清空栈(元素会逆序输出)
while (!s.empty()) {
    cout << s.top() << " ";  // 输出栈顶元素
    s.pop();                 // 移除栈顶元素
}
cout << endl;

// 方法2:复制栈后输出(不破坏原栈)
stack s_copy = s;  // 复制栈
while (!s_copy.empty()) {
    cout << s_copy.top() << " ";
    s_copy.pop();
}
cout << endl;

// 方法3:保持原栈顺序输出(需要使用辅助栈)
stack temp;
while (!s.empty()) {
    cout << s.top() << " ";  // 从栈顶到栈底输出
    temp.push(s.top());      // 保存元素
    s.pop();
}
cout << endl;
// 恢复原栈
while (!temp.empty()) {
    s.push(temp.top());
    temp.pop();
}
常用成员函数
1. 访问函数(Access)
  1. top()
    • 功能:访问栈顶元素
    • 用法stack.top()
    • 示例
stack s;
s.push(1);
s.push(2);
s.push(3);
cout << s.top() << endl;  // 输出: 3
2. 容量函数(Capacity)
  1. empty()
    • 功能:检查栈是否为空
    • 用法stack.empty()
    • 示例
stack s1;
stack s2;
s2.push(1);
cout << s1.empty() << endl;  // 输出: 1 (true)
cout << s2.empty() << endl;  // 输出: 0 (false)
  1. size()
    • 功能:返回栈中元素的个数
    • 用法stack.size()
    • 示例
stack s;
s.push(1);
s.push(2);
s.push(3);
cout << s.size() << endl;  // 输出: 3
3. 修改函数(Modifiers)
  1. push()
    • 功能:在栈顶插入元素
    • 用法stack.push(value)
    • 示例
stack s;
s.push(1);  // 栈: 1 (栈底) ← 栈顶
s.push(2);  // 栈: 1 2
s.push(3);  // 栈: 1 2 3
  1. emplace()
    • 功能:在栈顶直接构造元素,避免拷贝
    • 用法stack.emplace(args...)
    • 示例
stack> s;
s.emplace(1, "one");     // 直接在栈顶构造pair
s.push(make_pair(2, "two"));  // 先构造再拷贝
// 栈包含: {1, "one"} {2, "two"} (从栈底到栈顶)
  1. pop()
    • 功能:移除栈顶元素
    • 用法stack.pop()
    • 示例
stack s;
s.push(1);
s.push(2);
s.push(3);
s.pop();  // 移除3
cout << s.top() << endl;  // 输出: 2
  1. swap()(C++11)
    • 功能:交换两个栈的内容
    • 用法stack1.swap(stack2)
    • 示例
stack s1, s2;
s1.push(1);
s1.push(2);
s2.push(3);
s1.swap(s2);
// 现在s1包含: 3
// s2包含: 1 2
注意事项
  1. stack不支持迭代器访问,不能使用begin()、end()等函数

  2. stack不支持随机访问,不能通过下标访问元素

  3. stack是容器适配器,基于deque、vector、list等容器实现

  4. 后进先出(LIFO):元素总是从栈顶插入和删除

  5. 只能访问栈顶元素,不能直接访问中间或栈底元素

四、deque

申明
  • deque<类型名> 变量名
初始化
  1. 默认构造(空deque)
deque dq0;  // 创建空deque
// 结果: []
  1. 指定大小初始化
deque dq1(5);  // 创建包含5个元素的deque
// 结果: 0 0 0 0 0
  1. 指定大小和值初始化
deque dq2(5, 1);  // 创建包含5个元素的deque,每个元素为1
// 结果: 1 1 1 1 1
  1. 列表初始化
deque dq3{1, 2, 3};  // 用花括号初始化列表
// 等同于deque dq3 = {1, 2, 3};
// 结果: 1 2 3
  1. 拷贝初始化
deque dq4(dq2);  // 用dq2初始化dq4
// 结果: 1 1 1 1 1 (与dq2相同)
  1. 移动初始化
deque dq5(move(dq2));  // 移动dq2到dq5
// dq2变为空,dq5获得dq2的所有元素
  1. 从数组初始化
int arr[] = {1, 2, 3, 4, 5};
deque dq6(arr, arr + 5);  // 从数组范围初始化
// 结果: 1 2 3 4 5
  1. 从另一个deque的部分初始化
deque dq7(dq3.begin(), dq3.begin() + 2);
// 结果: 1 2 (dq3的前2个元素)
输入/输出
  • 输入
  1. 基本输入
deque dq;
int n, x;
cin >> n;  // 输入deque中元素个数
for (int i = 0; i < n; i++) {
    cin >> x;     // 读取一个整数
    dq.push_back(x);  // 从尾部添加元素
}
  1. 从两端交替输入
deque dq;
int n, x;
cin >> n;
for (int i = 0; i < n; i++) {
    cin >> x;
    if (i % 2 == 0) {
        dq.push_back(x);  // 偶数索引从尾部添加
    } else {
        dq.push_front(x); // 奇数索引从头部添加
    }
}
  • 输出
  1. 索引遍历
for (int i = 0; i < dq.size(); i++) {
    cout << dq[i] << " ";  // 输出每个元素
}
cout << endl;
  1. 使用范围for循环
for (auto& x : dq) {
    cout << x << " ";  // 输出每个元素
}
cout << endl;
  1. 迭代器
for (auto it = dq.begin(); it != dq.end(); it++) {
    cout << *it << " ";  // 输出每个元素
}
cout << endl;
  1. 从头部开始输出
// 从头部开始输出
deque dq_copy = dq;
while (!dq_copy.empty()) {
    cout << dq_copy.front() << " ";
    dq_copy.pop_front();
}
cout << endl;
常用成员函数
1.访问函数(Access)
  1. at()
    • 功能:带边界检查的访问,如果索引越界会抛出异常
    • 用法deque.at(index)
    • 示例
deque dq = {1, 2, 3, 4, 5};
cout << dq.at(2) << endl;  // 输出: 3
// 若cout << dq.at(10) << endl;  
// 会抛出 std::out_of_range 异常
  1. operator[](下标访问)
    • 功能:快速访问元素,不检查边界
    • 用法deque[index]
    • 示例
deque dq = {1, 2, 3, 4, 5};
cout << dq[2] << endl;  // 输出: 3
// cout << dq[10] << endl;  // 可能崩溃或返回错误值
  1. front()
    • 功能:访问第一个元素
    • 用法deque.front()
    • 示例
deque dq = {1, 2, 3, 4, 5};
cout << dq.front() << endl;  // 输出: 1
  1. back()
    • 功能:访问最后一个元素
    • 用法deque.back()
    • 示例
deque dq = {1, 2, 3, 4, 5};
cout << dq.back() << endl;  // 输出: 5
2.迭代器函数(Iterators)
  1. begin()
    • 功能:返回指向第一个元素的迭代器
    • 用法deque.begin()
    • 示例
deque dq = {1, 2, 3, 4, 5};
auto it = dq.begin();
cout << *it << endl;  // 输出: 1
  1. end()
    • 功能:返回指向最后一个元素之后的迭代器
    • 用法deque.end()
    • 示例
deque dq = {1, 2, 3};
for (auto it = dq.begin(); it != dq.end(); it++) {
    cout << *it << " ";  // 输出: 1 2 3
}
  1. rbegin()rend()
    • 功能:返回反向迭代器
    • 用法
    • rbegin():指向最后一个元素
    • rend():指向第一个元素之前
    • 示例
deque dq = {1, 2, 3};
for (auto it = dq.rbegin(); it != dq.rend(); it++) {
    cout << *it << " ";  // 输出: 3 2 1 (逆序输出)
}
3.容量函数(Capacity)
  1. empty()
    • 功能:检查deque是否为空
    • 用法deque.empty()
    • 示例
deque dq1 = {1, 2, 3};
deque dq2;
cout << dq1.empty() << endl;  // 输出: 0 (false)
cout << dq2.empty() << endl;  // 输出: 1 (true)
  1. size()
    • 功能:返回当前元素个数
    • 用法deque.size()
    • 示例
deque dq = {1, 2, 3, 4, 5};
cout << dq.size() << endl;  // 输出: 5
  1. clear()
    • 功能:清空所有元素
    • 用法deque.clear()
    • 示例
deque dq = {1, 2, 3, 4, 5};
cout << "清空前大小: " << dq.size() << endl;  // 输出: 5
dq.clear();
cout << "清空后大小: " << dq.size() << endl;  // 输出: 0
4.修改函数(Modifiers)
  1. insert()
    • 功能:在指定位置插入元素
    • 用法
    • deque.insert(position, value):在指定位置插入一个元素
    • deque.insert(position, n, value):在指定位置插入n个value
    • deque.insert(position, first, last):在指定位置插入范围元素
    • 示例
deque dq = {1, 3, 4, 5};
// 在3之前插入2
auto it = dq.begin() + 1;
dq.insert(it, 2);
// 现在dq = {1, 2, 3, 4, 5}

// 在开头插入3个0
dq.insert(dq.begin(), 3, 0);
// 现在dq = {0, 0, 0, 1, 2, 3, 4, 5}
  1. erase()
    • 功能:删除指定位置或范围的元素
    • 用法
    • deque.erase(position):删除指定位置元素
    • deque.erase(first, last):删除范围元素
    • 示例
deque dq = {1, 2, 3, 4, 5};
// 删除第三个元素(3)
dq.erase(dq.begin() + 2);
// 现在dq = {1, 2, 4, 5}

// 删除前两个元素
dq.erase(dq.begin(), dq.begin() + 2);
// 现在dq = {4, 5}
  1. resize()
    • 功能:改变deque的大小
    • 用法
    • deque.resize(new_size):改变大小,新元素默认构造
    • deque.resize(new_size, value):改变大小,新元素为value
    • 示例
deque dq = {1, 2, 3};
dq.resize(5);  // 增大,新元素初始化为0
// 现在dq = {1, 2, 3, 0, 0}

dq.resize(2);  // 缩小
// 现在dq = {1, 2}
  1. push_front()
    • 功能:在头部添加元素
    • 用法deque.push_front(value)
    • 示例
deque dq = {2, 3};
dq.push_front(1);  // 在头部添加1
// 现在dq = {1, 2, 3}
  1. emplace_front()
    • 功能:在头部直接构造元素,避免拷贝
    • 用法deque.emplace_front(args...)
    • 示例
deque> dq;
dq.emplace_front(1, "one");  // 在头部直接构造pair
// 现在dq = {{1, "one"}}
  1. push_back()
    • 功能:在尾部添加元素
    • 用法deque.push_back(value)
    • 示例
deque dq = {1, 2};
dq.push_back(3);  // 在尾部添加3
// 现在dq = {1, 2, 3}
  1. emplace_back()
    • 功能:在尾部直接构造元素,避免拷贝
    • 用法deque.emplace_back(args...)
    • 示例
deque> dq;
dq.emplace_back(1, "one");  // 在尾部直接构造pair
// 现在dq = {{1, "one"}}
  1. pop_front()
    • 功能:移除头部元素
    • 用法deque.pop_front()
    • 示例
deque dq = {1, 2, 3, 4, 5};
dq.pop_front();  // 移除1
// 现在dq = {2, 3, 4, 5}
  1. pop_back()
    • 功能:移除尾部元素
    • 用法deque.pop_back()
    • 示例
deque dq = {1, 2, 3, 4, 5};
dq.pop_back();  // 移除5
// 现在dq = {1, 2, 3, 4}
  1. swap()
    • 功能:交换两个deque的内容
    • 用法deque1.swap(deque2)
    • 示例
deque dq1 = {1, 2, 3};
deque dq2 = {4, 5};
dq1.swap(dq2);
// 现在dq1 = {4, 5}, dq2 = {1, 2, 3}
比较运算
  1. 基本比较操作
deque dq1{1, 2, 3};
deque dq2{1, 2, 4};
bool result = dq1 < dq2;  // 比较dq1是否小于dq2
// result = true,因为3 < 4
  1. 支持的比较运算符
    deque支持以下比较运算符:
    • ==:相等
    • !=:不等
    • <:小于
    • <=:小于等于
    • >:大于
    • >=:大于等于
  2. 比较规则
    比较按照字典序(lexicographical comparison)
    • 从左到右比较对应位置的元素
    • 第一个不相同的元素决定比较结果
    • 如果所有对应元素都相等,较短的deque较小
注意事项
  1. deque支持随机访问,可以通过下标[]at()访问任意位置

  2. deque支持两端操作,可以在头部和尾部高效插入删除

  3. deque内部实现是分段连续空间,比vector在头部插入更高效

  4. 中间位置的插入删除:时间复杂度为O(n),效率较低

  5. 内存不连续:deque的内存是分段连续的,不是完全连续

五、priority_queue

申明
  • priority_queue<类型名> 变量名
初始化
  1. 默认构造(空优先队列)
priority_queue pq1;  // 创建空的大顶堆
// 结果: []
  1. 从容器初始化
vector vec{3, 1, 4, 1, 5, 9};
priority_queue pq2(vec.begin(), vec.end());  // 用vector初始化
// 结果: 9 5 4 3 1 1 (内部存储顺序,顶部是9)
  1. 自定义比较函数初始化
// 小顶堆
priority_queue, greater> pq3;  // 小顶堆
// 结果: [] (顶部是最小元素)

// 使用自定义比较函数
struct Compare {
    bool operator()(int a, int b) {
        return a > b;  // 小顶堆
    }
};
priority_queue, Compare> pq4;
  1. 指定底层容器
// 默认底层容器是vector
priority_queue> pq5;  // 明确指定vector
priority_queue> pq6;  // 指定deque作为底层容器
  1. 用数组初始化
int arr[] = {3, 1, 4, 1, 5, 9};
priority_queue pq7(arr, arr + 6);  // 用数组范围初始化
// 结果: 顶部是9
  1. 用其他priority_queue初始化
priority_queue pq8(pq2);  // 拷贝初始化
// 结果: 与pq2相同
输入/输出
  • 输入
    priority_queue通常通过循环逐个元素输入
priority_queue pq;
int n, x;
cin >> n;  // 输入元素个数
for (int i = 0; i < n; i++) {
    cin >> x;     // 读取一个整数
    pq.push(x);   // 将整数插入优先队列
}
  • 输出
    priority_queue只能访问顶部元素,要输出所有元素需要边弹出边输出
// 方法1:输出并清空优先队列(会破坏原队列)
while (!pq.empty()) {
    cout << pq.top() << " ";  // 输出顶部元素
    pq.pop();                 // 移除顶部元素
}
cout << endl;

// 方法2:复制后输出(不破坏原优先队列)
priority_queue pq_copy = pq;  // 复制优先队列
while (!pq_copy.empty()) {
    cout << pq_copy.top() << " ";
    pq_copy.pop();
}
cout << endl;

// 方法3:保持原样输出(需要使用辅助数据结构)
vector temp;
while (!pq.empty()) {
    cout << pq.top() << " ";  // 从大到小输出
    temp.push_back(pq.top());  // 保存元素
    pq.pop();
}
cout << endl;
// 恢复原优先队列
for (int x : temp) {
    pq.push(x);
}
常用成员函数
1. 访问函数(Access)
  1. top()
    • 功能:访问顶部(优先级最高)的元素
    • 用法priority_queue.top()
    • 示例
priority_queue pq;
pq.push(3);
pq.push(1);
pq.push(5);
cout << pq.top() << endl;  // 输出: 5 (最大元素)
2. 容量函数(Capacity)
  1. empty()
    • 功能:检查优先队列是否为空
    • 用法priority_queue.empty()
    • 示例
priority_queue pq1;
priority_queue pq2;
pq2.push(1);
cout << pq1.empty() << endl;  // 输出: 1 (true)
cout << pq2.empty() << endl;  // 输出: 0 (false)
  1. size()
    • 功能:返回优先队列中元素的个数
    • 用法priority_queue.size()
    • 示例
priority_queue pq;
pq.push(1);
pq.push(2);
pq.push(3);
cout << pq.size() << endl;  // 输出: 3
3. 修改函数(Modifiers)
  1. push()
    • 功能:插入元素
    • 用法priority_queue.push(value)
    • 示例
priority_queue pq;
pq.push(3);  // 插入3
pq.push(1);  // 插入1
pq.push(5);  // 插入5
// 现在顶部是5
  1. emplace()
    • 功能:直接构造元素,避免拷贝
    • 用法priority_queue.emplace(args...)
    • 示例
priority_queue> pq;
pq.emplace(3, "three");  // 直接构造pair
pq.push(make_pair(1, "one"));  // 先构造再拷贝
// 现在顶部是{3, "three"}
  1. pop()
    • 功能:移除顶部元素
    • 用法priority_queue.pop()
    • 示例
priority_queue pq;
pq.push(3);
pq.push(1);
pq.push(5);
pq.pop();  // 移除5
cout << pq.top() << endl;  // 输出: 3
  1. swap()
    • 功能:交换两个优先队列的内容
    • 用法priority_queue1.swap(priority_queue2)
    • 示例
priority_queue pq1, pq2;
pq1.push(1);
pq1.push(2);
pq2.push(3);
pq1.swap(pq2);
// 现在pq1包含: 3
// pq2包含: 2 1 (顶部是2)
注意事项
  1. priority_queue不支持迭代器访问,不能使用begin()、end()等函数

  2. priority_queue不支持随机访问,不能通过下标访问元素

  3. priority_queue是容器适配器,基于vector、deque等容器实现

  4. 默认是大顶堆,顶部元素是最大的

  5. 内部实现通常是二叉堆,插入删除的时间复杂度为O(log n)

  6. 只能访问顶部元素,不能直接访问其他元素

  7. 相同优先级的元素顺序不确定

六、set

申明
  • set<类型名> 变量名
初始化
  1. 默认构造(空集合)
set s0;  // 创建空集合
// 结果: {}
  1. 列表初始化
set s1{1, 2, 3};  // 用花括号初始化列表
// 等同于set s1 = {1, 2, 3};
// 结果: 1 2 3 (自动排序)
  1. 拷贝初始化
set s2(s1);  // 用s1初始化s2
// 结果: 1 2 3 (与s1相同)
  1. 从数组初始化
int arr[] = {3, 1, 4, 1, 5, 9};
set s3(arr, arr + 6);  // 从数组范围初始化
// 结果: 1 3 4 5 9 (自动去重和排序)
  1. 从另一个容器的部分初始化
vector vec{3, 1, 4, 1, 5, 9};
set s4(vec.begin(), vec.begin() + 3);  // 用vector前3个元素初始化
// 结果: 1 3 4
  1. 自定义比较函数初始化
// 降序集合
set> s5;  // 使用greater作为比较函数
s5.insert({1, 2, 3});
// 结果: 3 2 1
输入/输出
  • 输入
    set通过插入元素输入
set s;
int n, x;
cin >> n;  // 输入元素个数
for (int i = 0; i < n; i++) {
    cin >> x;     // 读取一个整数
    s.insert(x);  // 插入集合,自动去重排序
}
  • 输出
  1. 使用范围for循环
for (auto& x : s) {
    cout << x << " ";  // 按顺序输出每个元素
}
cout << endl;
  1. 迭代器遍历
for (auto it = s.begin(); it != s.end(); it++) {
    cout << *it << " ";
}
cout << endl;
  1. 反向遍历
for (auto it = s.rbegin(); it != s.rend(); it++) {
    cout << *it << " ";  // 逆序输出
}
cout << endl;
常用成员函数
1. 容量函数(Capacity)
  1. empty()
    • 功能:检查set是否为空
    • 用法set.empty()
    • 示例
set s1{1, 2, 3};
set s2;
cout << s1.empty() << endl;  // 输出: 0 (false)
cout << s2.empty() << endl;  // 输出: 1 (true)
  1. size()
    • 功能:返回set中元素个数
    • 用法set.size()
    • 示例
set s{1, 2, 3, 4, 5};
cout << s.size() << endl;  // 输出: 5
2. 修改函数(Modifiers)
  1. insert()
    • 功能:插入元素
    • 用法
    • set.insert(value):插入单个元素
    • set.insert(first, last):插入范围元素
    • 示例
set s;
s.insert(3);  // 插入3
s.insert(1);  // 插入1
s.insert(5);  // 插入5
// 结果: 1 3 5

vector vec{2, 4};
s.insert(vec.begin(), vec.end());  // 插入范围
// 结果: 1 2 3 4 5
  1. emplace()
    • 功能:直接构造元素,避免拷贝
    • 用法set.emplace(args...)
    • 示例
set> s;
s.emplace(1, "one");  // 直接构造pair
// 现在s = {{1, "one"}}
  1. erase()
    • 功能:删除元素
    • 用法
    • set.erase(key):删除键值为key的元素
    • set.erase(position):删除指定位置元素
    • set.erase(first, last):删除范围元素
    • 示例
set s{1, 2, 3, 4, 5};
s.erase(3);  // 删除元素3
// 结果: 1 2 4 5

auto it = s.find(2);
if (it != s.end()) {
    s.erase(it);  // 删除迭代器指向的元素
}
// 结果: 1 4 5
  1. clear()
    • 功能:清空所有元素
    • 用法set.clear()
    • 示例
set s{1, 2, 3, 4, 5};
s.clear();
cout << s.size() << endl;  // 输出: 0
3. 查找函数(Lookup)
  1. find()
    • 功能:查找元素,返回迭代器
    • 用法set.find(key)
    • 示例
set s{1, 2, 3, 4, 5};
auto it = s.find(3);
if (it != s.end()) {
    cout << "找到: " << *it << endl;  // 输出: 找到: 3
} else {
    cout << "未找到" << endl;
}
  1. count()
    • 功能:统计元素出现次数(对set总是0或1)
    • 用法set.count(key)
    • 示例
set s{1, 2, 3, 4, 5};
cout << s.count(3) << endl;  // 输出: 1
cout << s.count(6) << endl;  // 输出: 0
  1. lower_bound()
    • 功能:返回第一个不小于key的元素的迭代器
    • 用法set.lower_bound(key)
    • 示例
set s{1, 2, 4, 5};
auto it = s.lower_bound(3);
if (it != s.end()) {
    cout << *it << endl;  // 输出: 4
}
  1. upper_bound()
    • 功能:返回第一个大于key的元素的迭代器
    • 用法set.upper_bound(key)
    • 示例
set s{1, 2, 4, 5};
auto it = s.upper_bound(2);
if (it != s.end()) {
    cout << *it << endl;  // 输出: 4
}
  1. equal_range()
    • 功能:返回一个pair,表示等于key的元素范围
    • 用法set.equal_range(key)
    • 示例
set s{1, 2, 3, 4, 5};
auto p = s.equal_range(3);
if (p.first != p.second) {
    cout << "找到: " << *p.first << endl;  // 输出: 找到: 3
}
4. 迭代器函数(Iterators)
  1. begin()end()
    • 功能:返回指向第一个元素和最后一个元素之后的迭代器
    • 示例
set s{1, 2, 3};
for (auto it = s.begin(); it != s.end(); it++) {
    cout << *it << " ";  // 输出: 1 2 3
}
  1. rbegin()rend()
    • 功能:返回反向迭代器
    • 示例
set s{1, 2, 3};
for (auto it = s.rbegin(); it != s.rend(); it++) {
    cout << *it << " ";  // 输出: 3 2 1
}
比较运算

set支持比较运算符,比较规则与vector类似(字典序):

  • ==:相等
  • !=:不等
  • <:小于
  • <=:小于等于
  • >:大于
  • >=:大于等于
注意事项
  1. 元素自动排序,默认升序

  2. 元素唯一,不允许重复

  3. 插入删除时间复杂度:O(log n)

  4. 不支持随机访问,不能通过下标访问

  5. 基于红黑树实现,保持平衡

七、multiset

申明
  • multiset<类型名> 变量名
multiset ms;  // 创建一个int类型的多重集合
初始化

与set类似,但允许重复元素:

multiset ms1{1, 2, 2, 3, 3, 3};  // 列表初始化
// 结果: 1 2 2 3 3 3 (允许重复)
常用成员函数

multiset的成员函数与set基本相同,但有以下区别:

  1. count()可以返回大于1的值
multiset ms{1, 2, 2, 3, 3, 3};
cout << ms.count(2) << endl;  // 输出: 2
cout << ms.count(3) << endl;  // 输出: 3
  1. erase(key)会删除所有等于key的元素
multiset ms{1, 2, 2, 3, 3, 3};
ms.erase(2);  // 删除所有2
// 结果: 1 3 3 3
  1. equal_range()在multiset中更有用
multiset ms{1, 2, 2, 3, 3, 3};
auto p = ms.equal_range(2);
for (auto it = p.first; it != p.second; it++) {
    cout << *it << " ";  // 输出: 2 2
}
注意事项
  1. 允许重复元素
  2. 其他特性与set相同

八、unordered_set

申明
  • unordered_set<类型名> 变量名
初始化
  1. 默认构造
unordered_set us0;  // 创建空无序集合
  1. 列表初始化
unordered_set us1{1, 2, 3, 4, 5};
// 结果: 元素无序,但保证唯一
  1. 从范围初始化
vector vec{1, 2, 3, 4, 5};
unordered_set us2(vec.begin(), vec.end());
输入/输出

与set类似,但输出顺序不确定:

unordered_set us{3, 1, 4, 1, 5, 9};
for (auto& x : us) {
    cout << x << " ";  // 输出顺序不确定
}
// 可能的输出: 9 5 1 3 4
常用成员函数

unordered_set的成员函数与set类似,但缺少排序相关函数:

  1. 哈希相关函数
unordered_set us{1, 2, 3, 4, 5};
cout << us.bucket_count() << endl;  // 桶的数量
cout << us.load_factor() << endl;   // 负载因子
us.rehash(20);  // 重新哈希
  1. 不支持反向迭代器
unordered_set us{1, 2, 3};
// 没有rbegin(), rend()函数
比较运算

unordered_set只支持==!=,不支持<<=>>=

注意事项
  1. 元素无序,不保证任何顺序

  2. 元素唯一,不允许重复

  3. 平均时间复杂度:O(1),最坏O(n)

  4. 基于哈希表实现

  5. 不支持反向迭代器

九、map

申明
  • map<键类型, 值类型> 变量名
map mp;           // 创建一个int到string的映射
map mp2;         // 创建一个string到int的映射
初始化
  1. 默认构造(空映射)
map mp0;  // 创建空映射
// 结果: {}
  1. 列表初始化
map mp1{
    {1, "one"},
    {2, "two"},
    {3, "three"}
};  // 用花括号初始化列表
// 等同于 map mp1 = {{1, "one"}, {2, "two"}, {3, "three"}};
// 结果: 1:"one", 2:"two", 3:"three" (按键排序)
  1. 拷贝初始化
map mp2(mp1);  // 用mp1初始化mp2
// 结果: 与mp1相同
  1. 从数组初始化
pair arr[] = {{1, "one"}, {2, "two"}, {3, "three"}};
map mp3(arr, arr + 3);  // 从数组范围初始化
// 结果: 1:"one", 2:"two", 3:"three"
  1. 从另一个容器的部分初始化
vector> vec{{1, "one"}, {2, "two"}, {3, "three"}};
map mp4(vec.begin(), vec.begin() + 2);  // 用vector前2个元素初始化
// 结果: 1:"one", 2:"two"
  1. 自定义比较函数初始化
// 降序映射
map> mp5;  // 使用greater作为比较函数
mp5.insert({{1, "one"}, {2, "two"}, {3, "three"}});
// 结果: 3:"three", 2:"two", 1:"one"
输入/输出
  • 输入
    map通过插入键值对输入
map mp;
int n, value;
string key;
cin >> n;  // 输入键值对个数
for (int i = 0; i < n; i++) {
    cin >> key >> value;  // 读取键和值
    mp[key] = value;     // 插入键值对
}
  • 输出
  1. 使用范围for循环
for (auto& [key, value] : mp) {  // C++17结构化绑定
    cout << key << ": " << value << endl;
}
// 或者
for (auto& p : mp) {
    cout << p.first << ": " << p.second << endl;
}
  1. 迭代器遍历
for (auto it = mp.begin(); it != mp.end(); it++) {
    cout << it->first << ": " << it->second << endl;
}
  1. 反向遍历
for (auto it = mp.rbegin(); it != mp.rend(); it++) {
    cout << it->first << ": " << it->second << endl;  // 逆序输出
}
常用成员函数
1. 容量函数(Capacity)
  1. empty()
    • 功能:检查map是否为空
    • 用法map.empty()
    • 示例
map mp1{{1, "one"}, {2, "two"}};
map mp2;
cout << mp1.empty() << endl;  // 输出: 0 (false)
cout << mp2.empty() << endl;  // 输出: 1 (true)
  1. size()
    • 功能:返回map中键值对个数
    • 用法map.size()
    • 示例
map mp{{1, "one"}, {2, "two"}, {3, "three"}};
cout << mp.size() << endl;  // 输出: 3
2. 修改函数(Modifiers)
  1. insert()
    • 功能:插入键值对
    • 用法
    • map.insert(pair):插入单个键值对
    • map.insert({key, value}):插入单个键值对(C++11)
    • map.insert(first, last):插入范围键值对
    • 示例
map mp;
mp.insert(make_pair(1, "one"));  // 方法1
mp.insert({2, "two"});           // 方法2
mp.insert(pair(3, "three"));  // 方法3

vector> vec{{4, "four"}, {5, "five"}};
mp.insert(vec.begin(), vec.end());  // 插入范围
// 结果: 1:"one", 2:"two", 3:"three", 4:"four", 5:"five"
  1. emplace()
    • 功能:直接构造键值对,避免拷贝
    • 用法map.emplace(args...)
    • 示例
map mp;
mp.emplace(1, "one");  // 直接构造pair
// 现在mp = {1:"one"}
  1. erase()
    • 功能:删除元素
    • 用法
    • map.erase(key):删除键为key的元素
    • map.erase(position):删除指定位置元素
    • map.erase(first, last):删除范围元素
    • 示例
map mp{{1, "one"}, {2, "two"}, {3, "three"}, {4, "four"}};
mp.erase(2);  // 删除键为2的元素
// 结果: 1:"one", 3:"three", 4:"four"

auto it = mp.find(3);
if (it != mp.end()) {
    mp.erase(it);  // 删除迭代器指向的元素
}
// 结果: 1:"one", 4:"four"
  1. clear()
    • 功能:清空所有元素
    • 用法map.clear()
    • 示例
map mp{{1, "one"}, {2, "two"}, {3, "three"}};
mp.clear();
cout << mp.size() << endl;  // 输出: 0
  1. operator[]
    • 功能:访问或插入元素
    • 用法map[key]
    • 示例
map mp;
mp["apple"] = 5;  // 插入或修改
mp["banana"] = 3;
cout << mp["apple"] << endl;  // 输出: 5
cout << mp["orange"] << endl;  // 输出: 0 (自动插入默认值)
  1. at()
    • 功能:带边界检查的访问
    • 用法map.at(key)
    • 示例
map mp{{"apple", 5}, {"banana", 3}};
cout << mp.at("apple") << endl;  // 输出: 5
// cout << mp.at("orange") << endl;  // 抛出 std::out_of_range 异常
3. 查找函数(Lookup)
  1. find()
    • 功能:查找键,返回迭代器
    • 用法map.find(key)
    • 示例
map mp{{1, "one"}, {2, "two"}, {3, "three"}};
auto it = mp.find(2);
if (it != mp.end()) {
    cout << "找到: " << it->first << " -> " << it->second << endl;
    // 输出: 找到: 2 -> two
} else {
    cout << "未找到" << endl;
}
  1. count()
    • 功能:统计键出现次数(总是0或1,因为键唯一)
    • 用法map.count(key)
    • 示例
map mp{{1, "one"}, {2, "two"}, {3, "three"}};
cout << mp.count(2) << endl;  // 输出: 1
cout << mp.count(4) << endl;  // 输出: 0
  1. lower_bound()
    • 功能:返回第一个不小于key的元素的迭代器
    • 用法map.lower_bound(key)
    • 示例
map mp{{1, "one"}, {3, "three"}, {5, "five"}};
auto it = mp.lower_bound(2);
if (it != mp.end()) {
    cout << it->first << ": " << it->second << endl;  // 输出: 3: three
}
  1. upper_bound()
    • 功能:返回第一个大于key的元素的迭代器
    • 用法map.upper_bound(key)
    • 示例
map mp{{1, "one"}, {3, "three"}, {5, "five"}};
auto it = mp.upper_bound(2);
if (it != mp.end()) {
    cout << it->first << ": " << it->second << endl;  // 输出: 3: three
}
  1. equal_range()
    • 功能:返回一个pair,表示等于key的元素范围
    • 用法map.equal_range(key)
    • 示例
map mp{{1, "one"}, {2, "two"}, {3, "three"}};
auto p = mp.equal_range(2);
if (p.first != p.second) {
    cout << "找到: " << p.first->first << " -> " << p.first->second << endl;
    // 输出: 找到: 2 -> two
}
4. 迭代器函数(Iterators)
  1. begin()end()
    • 功能:返回指向第一个元素和最后一个元素之后的迭代器
    • 示例
map mp{{1, "one"}, {2, "two"}, {3, "three"}};
for (auto it = mp.begin(); it != mp.end(); it++) {
    cout << it->first << ": " << it->second << " ";  // 输出: 1:one 2:two 3:three
}
  1. rbegin()rend()
    • 功能:返回反向迭代器
    • 示例
map mp{{1, "one"}, {2, "two"}, {3, "three"}};
for (auto it = mp.rbegin(); it != mp.rend(); it++) {
    cout << it->first << ": " << it->second << " ";  // 输出: 3:three 2:two 1:one
}
比较运算

map支持比较运算符,比较规则与vector类似(字典序,按键比较):

  • ==:相等
  • !=:不等
  • <:小于
  • <=:小于等于
  • >:大于
  • >=:大于等于
    比较示例:
map mp1{{1, "one"}, {2, "two"}};
map mp2{{1, "one"}, {3, "three"}};
cout << (mp1 < mp2) << endl;  // 输出: 1 (true),因为2 < 3
注意事项
  1. 按键自动排序,默认升序

  2. 键唯一,不允许重复键

  3. 插入删除时间复杂度:O(log n)

  4. 基于红黑树实现,保持平衡

  5. operator[]会自动插入不存在的键,而at()会抛出异常

  6. **可以使用结构化绑定(C++17)**简化遍历

十、multimap

申明
  • multimap<键类型, 值类型> 变量名
multimap mmp;  // 创建一个int到string的多重映射
初始化

与map类似,但允许重复键:

multimap mmp1{
    {1, "one"},
    {2, "two"},
    {2, "another two"},  // 允许重复键
    {3, "three"}
};  // 列表初始化
// 结果: 1:"one", 2:"two", 2:"another two", 3:"three" (按键排序)
常用成员函数

multimap的成员函数与map基本相同,但有重要区别:

  1. 不支持operator[]at()
multimap mmp;
// mmp[1] = "one";  // 错误,不支持operator[]
// mmp.at(1);       // 错误,不支持at()
  1. insert()总是成功
multimap mmp;
mmp.insert({1, "one"});
mmp.insert({1, "another one"});  // 成功插入重复键
  1. count()可以返回大于1的值
multimap mmp{{1, "one"}, {1, "another"}, {2, "two"}};
cout << mmp.count(1) << endl;  // 输出: 2
  1. equal_range()在multimap中更有用
multimap mmp{{1, "one"}, {1, "another"}, {2, "two"}};
auto p = mmp.equal_range(1);
for (auto it = p.first; it != p.second; it++) {
    cout << it->first << ": " << it->second << " ";  // 输出: 1:one 1:another
}
注意事项
  1. 允许重复键

  2. 不支持operator[]at()

  3. 其他特性与map相同

十一、unordered_map

申明
  • unordered_map<键类型, 值类型> 变量名
初始化
  1. 默认构造
unordered_map ump0;  // 创建空无序映射
  1. 列表初始化
unordered_map ump1{
    {"apple", 5},
    {"banana", 3},
    {"orange", 2}
};
// 结果: 元素无序,但键唯一
  1. 从范围初始化
vector> vec{{"apple", 5}, {"banana", 3}, {"orange", 2}};
unordered_map ump2(vec.begin(), vec.end());
输入/输出

与map类似,但输出顺序不确定:

unordered_map ump{{"apple", 5}, {"banana", 3}, {"orange", 2}};
for (auto& [key, value] : ump) {
    cout << key << ": " << value << " ";  // 输出顺序不确定
}
// 可能的输出: orange:2 banana:3 apple:5
常用成员函数

unordered_map的成员函数与map类似,但缺少排序相关函数,增加哈希相关函数:

  1. 支持operator[]at()
unordered_map ump;
ump["apple"] = 5;
cout << ump.at("apple") << endl;  // 输出: 5
  1. 哈希相关函数
unordered_map ump{{"apple", 5}, {"banana", 3}, {"orange", 2}};
cout << ump.bucket_count() << endl;  // 桶的数量
cout << ump.load_factor() << endl;   // 负载因子
ump.rehash(20);  // 重新哈希
  1. 不支持反向迭代器
unordered_map ump{{"apple", 5}, {"banana", 3}, {"orange", 2}};
// 没有rbegin(), rend()函数
比较运算

unordered_map只支持==!=,不支持<<=>>=

注意事项
  1. 元素无序,不保证任何顺序

  2. 键唯一,不允许重复键

  3. 平均时间复杂度:O(1),最坏O(n)

  4. 基于哈希表实现

  5. 不支持反向迭代器

例题部分

一、【模板】栈

原题链接:B3614 【模板】栈 - 洛谷
题解:

#include 
using namespace std;
int main() {
  int T;
  cin >> T;
  while (T--) {
    stack stk;
    int n;
    cin >> n;
    while (n--) {
      char op[6];
      unsigned long long x;
      scanf("%s", op);
      if (strcmp(op, "push") == 0) {
        scanf("%llu", &x);
        stk.push(x);
      } else if (strcmp(op, "pop") == 0) {
        if (stk.empty()) {
          cout << "Empty" << endl;
        } else {
          stk.pop();
        }
      } else if (strcmp(op, "query") == 0) {
        if (stk.empty()) {
          cout << "Anguei!" << endl;
        } else {
          cout << stk.top() << endl;
        }
      } else {
        cout << stk.size() << endl;
      }
    }
  }
}

二、【模板】队列

原题链接:B3616 【模板】队列 - 洛谷
题解:

#include 
using namespace std;
int main() {
  queue que;
  int n;
  cin >> n;
  while (n--) {
    int op, x;
    cin >> op;
    if (op == 1) {
      cin >> x;
      que.push(x);
    } else if (op == 2) {
      if (que.empty()) {
        cout << "ERR_CANNOT_POP" << endl;
      } else {
        que.pop();
      }
    } else if (op == 3) {
      if (que.empty()) {
        cout << "ERR_CANNOT_QUERY" << endl;
      } else {
        cout << que.front() << endl;
      }
    } else {
      cout << que.size() << endl;
    }
  }
}

三、[语言月赛202303]Coin Selection G

原题链接:B3723 [语言月赛202303] Coin Selection G - 洛谷
题解:

#include 
using namespace std;
int main() {
  using u64 = unsigned long long;
  multiset coins;
  int n;
  cin >> n;
  while (n--) {
    u64 coin;
    cin >> coin;
    coins.insert(coin);
  }
  u64 p1 = 0, p2 = 0;
  auto select = [&](u64 &sum) {
    auto iter = coins.upper_bound(sum);
    if (iter != coins.begin()) iter--;
    sum += *iter;
    coins.erase(iter);
  };
  while (!coins.empty()) {
    select(p1);
    if (coins.empty()) break;
    select(p2);
  }
  cout << p1 << ' ' << p2 << endl;
}

四、[语言月赛202304]你的牌太多了

原题链接:B3745 [语言月赛202304] 你的牌太多了 - 洛谷
题解:

#include 
using namespace std;
int main() {
  int n, m, r;
  cin >> n >> m >> r;
  vector> p1(n), p2(n);
  for (auto &[x, _] : p1) cin >> x;
  for (auto &[_, x] : p1) cin >> x;
  for (auto &[x, _] : p2) cin >> x;
  for (auto &[_, x] : p2) cin >> x;
  multiset> ms(p2.begin(), p2.end());
  while (n--) {
    int id;
    cin >> id;
    auto &card = p1[id - 1];
    auto iter = ms.upper_bound(card);
    if (iter != ms.end() && iter->first == card.first) {
      ms.erase(iter);
    }
  }
  cout << ms.size() << endl;
}

五、[语言月赛202304] 洛谷评测机模拟器

原题链接:B3746 [语言月赛202304] 洛谷评测机模拟器 - 洛谷
题解:

#include 
using namespace std;
int main() {
  int n, m;
  cin >> n >> m;
  vector> ans(n);
  using pli = pair;
  set s;
  // priority_queue, greater> pq;
  for (int i = 0; i < n; i ++) {
    s.emplace(0, i);
  }
  for (int i = 1; i <= m; i ++) {
    int time;
    cin >> time;
    auto [total, id] = *s.begin();
    s.erase(s.begin());
    ans[id].push_back(i);
    s.emplace(total + time, id);
  }
  for (auto &line : ans) {
    if (line.size() == 0) {
      cout << "0" << endl;
      continue;
    }
    for (auto &x: line) {
      cout << x << ' ';
    }
    cout << endl;
  }
}

六、 [语言月赛 202312]铅球杯

原题链接:B3911 [语言月赛 202312] 铅球杯 - 洛谷
题解:

#include 
using namespace std;
int main() {
  // key -> value
  unordered_map mp;
  int n, k;
  cin >> n >> k;
  while (n--) {
    string key;
    int val;
    cin >> key >> val;
    mp.emplace(key, val);
  }
  string str;
  getline(cin, str);
  while (k --) {
    getline(cin, str);
    for (int i = 0; i < str.length(); i ++) {
      if (str[i] == '{') {
        int r = str.find('}', i + 1);
        string key = str.substr(i + 1, r - i - 1);
        int val = mp[key];
        str.replace(i, r - i + 1, to_string(val));
      }
    }
    cout << str << endl;
  }
}

七、A-B 数对

原题链接:P1102 A-B 数对 - 洛谷
题解:

#include 
using namespace std;
int main() {
  int n, c;
  cin >> n >> c;
  unordered_map ump;
  long long ans = 0;
  while (n--) {
    int x;
    cin >> x;
    ans += ump[x + c];
    ans += ump[x - c];
    ump[x]++;
  }
  cout << ans << endl;
}

八、日志分析

原题链接:P1165 日志分析 - 洛谷
题解:

#include 
using namespace std;
int main() {
  multiset values;
  stack stk;
  int n;
  cin >> n;
  while (n--) {
    int op, val;
    cin >> op;
    if(op == 0) {
      cin >> val;
      stk.push(val);
      values.insert(val);
    } else if (op == 1){
      if (stk.empty()) continue;
      int top = stk.top();
      stk.pop();
      values.erase(top);
    } else {
      if (values.size() == 0) {
        cout << 0 << endl;
        continue;
      }
      cout << *values.rbegin() << endl;
    }
  }
}

九、瑞瑞的木板

原题链接:P1334 瑞瑞的木板 - 洛谷
题解:

#include 
using namespace std;
int main() {
  int n;
  cin >> n;
  using u64 = unsigned long long;
  priority_queue, greater> q;
  while (n--) {
    int x;
    cin >> x;
    q.push(x);
  }
  u64 ans = 0;
  while (q.size() > 1) {
    u64 top1 = q.top();
    q.pop();
    u64 top2 = q.top();
    q.pop();
    ans += top1 + top2;
    q.push(top1 + top2);
  }
  cout << ans << endl;
}

十、眼红的Medusa

原题链接:P1571 眼红的Medusa - 洛谷
题解:

#include 
using namespace std;
int main() {
  int n, m;
  cin >> n >> m;
  vector vec(n);
  unordered_set s;
  for (auto &x : vec) cin >> x;
  while (m--) {
    int x;
    cin >> x;
    s.insert(x);
  }
  for (auto &x : vec) {
    if (s.count(x)) {
      cout << x << ' ';
    }
  }
  cout << endl;
}

十一、全排列问题

原题链接:P1706 全排列问题 - 洛谷
题解:

#include 
using namespace std;
int main() {
  int n;
  cin >> n;
  vector arr(n);
  for (int i = 0; i < n; i++) arr[i] = i + 1;
  do {
    for (int i = 0; i < n; i ++) {
      cout.width(5);
      cout << arr[i];
    }
    cout << endl;
  } while (next_permutation(arr.begin(), arr.end()));
}

十二、求第 k 小的数

原题链接:P1923 【深基9.例4】求第 k 小的数 - 洛谷
题解:

#include 
using namespace std;
int main() {
  int n, k;
  cin >> n >> k;
  vector arr(n);
  for (auto &x : arr) scanf("%d", &x);
  nth_element(arr.begin(), arr.begin() + k, arr.end());
  cout << arr[k] << endl;
}

十三、约瑟夫问题

原题链接:P1996 约瑟夫问题 - 洛谷
题解:

#include 
using namespace std;
int main() {
  queue que;
  int n, m;
  cin >> n >> m;
  for (int i = 1; i <= n; i ++) que.push(i);
  int cnt = 1;
  while (!que.empty()) {
    int id = que.front();
    que.pop();
    if (cnt == m) {
      cout << id << ' ';
      cnt = 1;
    } else {
      cnt ++;
      que.push(id);
    }
  }
}

十四、查找

原题链接:P2249 【深基13.例1】查找 - 洛谷
题解:

#include 
using namespace std;
int main() {
  int n, m;
  cin >> n >> m;
  vector arr(n);
  for (auto &x : arr) scanf("%d", &x);
  while (m--) {
    int x;
    scanf("%d", &x);
    auto iter = ranges::lower_bound(arr, x);
    if (iter != arr.end() && *iter == x) {
      // found;
      cout << (iter - arr.begin() + 1) << ' ';
    } else {
      cout << -1 << ' ';
    }
  }
  cout << endl;
}

十五、【模板】堆

原题链接:P3378 【模板】堆 - 洛谷
题解:

#include 
using namespace std;
int main() {
  multiset s;
  int n;
  cin >> n;
  while (n--) {
    int op, x;
    cin >> op;
    if (op == 1) {
      cin >> x;
      s.insert(x);
      // pq.push(x);
    } else if (op == 2) {
      cout << *s.begin() << endl;
    } else {
      // pq.pop();
      s.erase(s.begin());
    }
  }
}

十六、寄包柜

原题链接:P3613 【深基15.例2】寄包柜 - 洛谷
题解:

#include 
using namespace std;
int main() {
  unordered_map, int, decltype([](const pair &index) {
    return (size_t)index.first * 1e5 + index.second;
  })> mp;
  int n, q;
  cin >> n >> q;
  while (q--) {
    int op , i, j, k;
    cin >> op;
    if (op == 1) {
      cin >> i >> j >> k;
      mp[{i, j}] = k;
    } else {
      cin >> i >> j;
      cout << mp[{i, j}] << endl;
    }
  }
}

十七、[TJOI2010]阅读理解

原题链接:P3879 [TJOI2010] 阅读理解 - 洛谷
题解:

#include 
using namespace std;
int main() {
  unordered_map> mp;
  int n;
  cin >> n;
  for (int i = 1; i <= n; i ++) {
    int m;
    cin >> m;
    while (m--) {
      string str;
      cin >> str;
      mp[str].insert(i);
    }
  }
  int q;
  cin >> q;
  while (q--) {
    string str;
    cin >> str;
    for (auto &x : mp[str]) {
      cout << x << ' ';
    }
    cout << endl;
  }
}

十八、[JLOI2011] 不重复数字

原题链接:P4305 [JLOI2011] 不重复数字 - 洛谷
题解

#include 
using namespace std;
int main() {
  int T;
  cin >> T;
  while (T--) {
    set us;
    int n;
    cin >> n;
    while (n--) {
      int x;
      scanf("%d", &x);
      if (!us.count(x)) {
        us.insert(x);
        printf("%d ", x);
      }
    }
    cout << endl;
  }
}

十九、验证栈序列

原题链接:P4387 【深基15.习9】验证栈序列 - 洛谷
解题思路
题解:

#include 
using namespace std;
int main() {
  int T;
  cin >> T;
  while (T--) {
    int n;
    cin >> n;
    vector pushed(n), poped(n);
    for (auto &x : pushed) cin >> x;
    for (auto &x : poped) cin >> x;
    stack stk;
    int index = 0;
    for (auto &x : pushed) {
      stk.push(x);
      while (!stk.empty() && poped[index] == stk.top()) {
        stk.pop();
        index ++;
      }
    }
    cout << (stk.empty() ? "Yes" : "No") << endl;
  }
}

二十、[蓝桥杯 2021 省 AB2] 负载均衡

原题链接:P8755 [蓝桥杯 2021 省 AB2] 负载均衡 - 洛谷
题解:

#include 
using namespace std;
int main() {
  using pli = pair;
  using pq = priority_queue, greater>;
  int n, m;
  cin >> n >> m;
  vector> computes(n);
  for (auto &[v, _] : computes) cin >> v;
  while (m--) {
    int a, b, c, d;
    cin >> a >> b >> c >> d;
    auto &[v, q] = computes[b - 1];
    while (!q.empty() && q.top().first <= a) {
      v += q.top().second;
      q.pop();
    }
    if (d > v) {
      cout << -1 << endl;
      continue;
    }
    v -= d;
    q.emplace(a + c, d);
    cout << v << endl;
  }
}

本文地址:https://www.yitenyun.com/5705.html

搜索文章

Tags

#语言模型 #服务器 #人工智能 #大模型 #ai #ai大模型 #agent #飞书 #python #pip #conda #微信 #log4j #ollama #AI编程 #运维 #飞牛nas #fnos #AI #ios面试 #ios弱网 #断点续传 #ios开发 #objective-c #ios #ios缓存 #远程工作 #Trae #IDE #AI 原生集成开发环境 #Trae AI #kylin #docker #arm #学习 #产品经理 #AI大模型 #大模型学习 #大模型教程 #ssh #mongodb #linux #数据库 #算法 #数据结构 香港站群服务器 多IP服务器 香港站群 站群服务器 #PyTorch #深度学习 #模型训练 #星图GPU #银河麒麟高级服务器操作系统安装 #银河麒麟高级服务器V11配置 #设置基础软件仓库时出错 #银河麒高级服务器系统的实操教程 #生产级部署银河麒麟服务系统教程 #Linux系统的快速上手教程 #kubernetes #笔记 #平面 #容器 #学习方法 #fastapi #html #css #云计算 #云原生 #大数据 #职场和发展 #程序员创富 #科技 #自然语言处理 #神经网络 #私有化部署 #自动化 #ansible #ARM服务器 # GLM-4.6V # 多模态推理 #ubuntu #音视频 #pytorch #ide #java #开发语言 #前端 #javascript #架构 #vscode #gitee #hadoop #hbase #hive #zookeeper #spark #kafka #flink #大模型入门 #低代码 #爬虫 #分布式 #配置中心 #SpringCloud #Apollo #区块链 #测试用例 #生活 #langchain #mysql #分库分表 #垂直分库 #水平分表 #雪花算法 #分布式ID #跨库查询 #华为云 #部署上线 #动静分离 #Nginx #新人首发 #C++ #Reactor #gemini #gemini国内访问 #gemini api #gemini中转搭建 #Cloudflare #MobaXterm #物联网 #websocket #llama #opencv #数学建模 #http #mcp #mcp server #AI实战 #sql #AIGC #agi #java-ee #nginx #开源 #openHiTLS #TLCP #DTLCP #密码学 #商用密码算法 #fabric #postgresql #进程控制 #项目 #高并发 #机器学习 #阿里云 #经验分享 #安卓 #node.js #CFD #aws #iventoy #VmWare #OpenEuler #Ansible # 自动化部署 # VibeThinker #windows #驱动开发 #c++ #网络 #tcp/ip #多个客户端访问 #IO多路复用 #回显服务器 #TCP相关API #github #git #大语言模型 #长文本处理 #GLM-4 #Triton推理 #分阶段策略 #模型协议 #pycharm #矩阵 #线性代数 #AI运算 #向量 #后端 #Linux #TCP #线程 #线程池 #腾讯云 #流程图 #论文阅读 #信息可视化 #harmonyos #鸿蒙PC #vue上传解决方案 #vue断点续传 #vue分片上传下载 #vue分块上传下载 #RTP over RTSP #RTP over TCP #RTSP服务器 #RTP #TCP发送RTP #重构 #计算机视觉 #qt #android #c# #word #umeditor粘贴word #ueditor粘贴word #ueditor复制word #ueditor上传word图片 #unity #游戏引擎 #flutter #鸿蒙 #https #安全 #mvp #个人开发 #设计模式 #cpolar #华为 #dify #ci/cd #jenkins #gitlab #Conda # 私有索引 # 包管理 #正则 #正则表达式 #rag #rocketmq #stm32 #microsoft #数信院生信服务器 #Rstudio #生信入门 #生信云服务器 #SSM 框架 #孕期健康 #产品服务推荐 #推荐系统 #用户交互 #Windows 更新 #iBMC #UltraISO #web安全 #硬件工程 #课程设计 #spring boot #Harbor #程序员 #RAGFlow #DeepSeek-R1 #风控模型 #决策盲区 #YOLO #maven #spring #性能优化 #进程 #vue.js #serverless #Telegram机器人 #ClawdBot #多模态翻译 #大模型推理 #程序人生 #科研 #博士 #RAG #RAG调优 #RAG系统 #召回 #内存治理 #django #文心一言 #AI智能体 #牛客周赛 #搜索引擎 #导航网 #php #信息与通信 #rpa #实时互动 #能源 #mcu #网络协议 #企业开发 #ERP #项目实践 #.NET开发 #C#编程 #编程与数学 #c语言 #FL Studio #FLStudio #FL Studio2025 #FL Studio2026 #FL Studio25 #FL Studio26 #水果软件 #centos #svn #超算服务器 #算力 #高性能计算 #仿真分析工作站 #springboot #lvs #负载均衡 #华为od #华为od机考真题 #华为od机试真题 #华为OD上机考试真题 #华为OD机试双机位C卷 #华为OD上机考试双机位C卷 #华为ODFLASH坏块监测系统 #毕业设计 #堡垒机 #安恒明御堡垒机 #windterm #时序数据库 #Canal #jar #servlet #儿童书籍 #儿童诗歌 #童话故事 #经典好书 #儿童文学 #好书推荐 #经典文学作品 #ai agent #ai大小模型 #小模型 #开源小模型 #8b模型 #国产大模型 #SOTA #HCIA-Datacom #H12-811 #题库 #最新题库 #spring cloud #json #缓存 #redis #jetty #Agent #ecmascript #elementui #开源软件 #测试工具 #内网穿透 #le audio #蓝牙 #低功耗音频 #通信 #连接 #FaceFusion # Token调度 # 显存优化 #uni-app #小程序 #notepad++ #ui #团队开发 #墨刀 #figma #MCP #MCP服务器 #mobaxterm #2026年美赛C题代码 #2026年美赛 #select #论文 #毕设 #微服务 #Oauth2 #处理器模块 #现货库存 #价格优惠 #PM864AK01 #3BSE018161R1 #PLC #控制器模块 #PyCharm # 远程调试 # YOLOFuse #shell #CPU利用率 #电脑 #FTP服务器 #udp #vim #gcc #yum #企业微信 #es安装 #prometheus #AI办公 #智能助手 #pjsip #网络安全 #ESXi #golang #数据结构与算法 #服务器架构 #AI推理芯片 #DeepSeek #服务器繁忙 #推荐算法 #设备驱动 #芯片资料 #网卡 #jmeter #功能测试 #软件测试 #自动化测试 #diskinfo # TensorFlow # 磁盘健康 #边缘计算 #蓝桥杯 #SSH # ProxyJump # 跳板机 #哈希算法 #散列表 #java大文件上传 #java大文件秒传 #java大文件上传下载 #java文件传输解决方案 #嵌入式 #scrapy #jvm #学习笔记 #jdk #web #webdav #PowerBI #企业 #LLM #远程连接 #计算机网络 #转行 #我的世界 #游戏私服 #云服务器 #全能视频处理软件 #视频裁剪工具 #视频合并工具 #视频压缩工具 #视频字幕提取 #视频处理工具 #Ubuntu服务器 #硬盘扩容 #命令行操作 #VMware #gitea #Dell #PowerEdge620 #内存 #硬盘 #RAID5 #压枪 #鸭科夫 #逃离鸭科夫 #鸭科夫联机 #鸭科夫异地联机 #游戏 #开服 #matlab #支持向量机 #钉钉 #机器人 #autosar #FRP #ssl #深度优先 #DFS #swiftui #swift #职场发展 #dubbo #chatgpt #DS随心转 #新浪微博 #前端框架 #压力测试 #数据挖掘 #bytebase #lstm #零售 #3d #css3 #线性回归 #SSE #Android #Bluedroid #AI写作 #就业指南 #openclaw #实在Agent #分类 #社科数据 #数据分析 #数据统计 #经管数据 #ffmpeg #pdf #论文笔记 #游戏美术 #技术美术 #游戏策划 #游戏程序 #用户体验 #创业创新 #Buck #NVIDIA #交错并联 #DGX #CISSP #CISSP考点 #信息安全 #CISSP哪里考 #公众号:厦门微思网络 #+微信号:xmweisi #LabVIEW #光谱仪 #串口通信 #AQ6370 #whisper #transformer #googlecloud #系统架构 #思维模型 #认知框架 #认知 #架构师 #软考 #系统架构师 #AI大模型应用开发 #电商 #汽车 #嵌入式硬件 #powerpoint #Com #flask #oracle #visual studio code #postman #easyui #目标检测 #pyqt #单目测距 #速度估计 #pyqt界面 #注意力机制 #dreamweaver #DisM++ # 系统维护 #gpu算力 #AI产品经理 #大模型开发 #健康医疗 #金融 #教育电商 #媒体 #prompt #Java面试 #Java程序员 #后端开发 #Redis #分布式锁 #arm开发 #excel #abtest #链表 #敏捷流程 #海外服务器安装宝塔面板 #macos #自动驾驶 #单片机 #ISP Pipeline #行缓冲 #chrome #智慧校园一体化平台 #智慧校园管理系统 #合肥自友科技-智慧校园 #智慧校园源头厂家 #智慧校园软件供应商 #智慧校园平台服务商 #高性价比智慧校园系统 #leetcode #多线程 #数组 #性能调优策略 #双锁实现细节 #动态分配节点内存 #wsl #L2C #勒让德到切比雪夫 #asp.net #vue3 #天地图 #403 Forbidden #天地图403错误 #服务器403问题 #天地图API #部署报错 #考研 #软件工程 #测试覆盖率 #单元测试 #可用性测试 #bash #wps #GB/T4857 #GB/T4857.17 #GB/T4857测试 #Cpolar #国庆假期 #服务器告警 #操作系统 #Moltbook #Clawdbot #其他 #SEO优化 #stl #京东云 #OBC #xss #selenium #elasticsearch #版本控制 #Git入门 #开发工具 #代码托管 #vllm #Java #Spring #Spring Boot #twitter #mmap #nio #svm #amdgpu #kfd #ROCm #爱心代码 #表白代码 #爱心 #tkinter #情人节表白代码 #Redisson #rpc #面试 #protobuf #中间件 #微信小程序 #计算机 #连锁药店 #连锁店 #车辆排放 #防毒口罩 #防尘口罩 #具身智能 #发展心理学 #运动控制 #内在动机 #镜像神经元 #交叉学科 #七年级上册数学 #有理数 #有理数的加法法则 #绝对值 #数列 #数学 #数论 #洛谷 #聚类 #CNAS #CMA #程序文件 #逻辑回归 #numpy #scikit-learn #matplotlib #FutureWarning #sglang #laravel #list #智能路由器 #echarts #信号处理 #目标跟踪 #全栈 #结构体 #sqlserver #酒店客房管理系统 #IPMI #漏洞 #数据安全 #注入漏洞 #Moltbot #阻塞队列 #生产者消费者模型 #服务器崩坏原因 #电脑故障 #文件系统 #windbg分析蓝屏教程 #投标 #标书制作 #Chat平台 #ARM架构 #本地部署 #数据仓库 #交互 #vue #Streamlit #Qwen #AI聊天机器人 #智能体从0到1 #新手入门 #设计规范 #Modbus-TCP #cnn #数据集 #图像分类 #图像分割 #yolo26算法 #语音识别 #单例模式 #蓝耘智算 #wpf #数字化转型 #实体经济 #中小企业 #商业模式 #软件开发 #青蓝送水模式 #创业干货 #社交智慧 #职场生存 #系统思维 #身体管理 #商务宴请 #拒绝油腻 #清醒日常 #mybatis #后端 #测评 #幼儿园 #园长 #幼教 #rabbitmq #ssm #若依 #quartz #框架 #银河麒麟 #人大金仓 #Kingbase #YOLO26 #YOLO11 #虚幻 #ue5 #百度 #百度文库 #爱企查 #旋转验证码 #验证码识别 #图像识别 #流量运营 #用户运营 #智能手机 #epoll #麒麟 #国产化 #.netcore #部署 #openresty #lua #tomcat #firefox #STL #string #笔试 #TURN # WebRTC # HiChatBox ##程序员和算法的浪漫 #todesk #fastmcp #windows11 #系统修复 #AI运维 #企业微信集成 #DevOps自动化 #运营 #贪心算法 #高仿永硕E盘的个人网盘系统源码 #阳台种菜 #园艺手扎 #Gemini #Nano Banana Pro #clickhouse #测试流程 #金融项目实战 #P2P #DHCP #apache #webrtc #状态模式 #启发式算法 #android-studio #android studio #android runtime #跳槽 #业界资讯 #nmodbus4类库使用教程 #银河麒麟部署 #银河麒麟部署文档 #银河麒麟linux #银河麒麟linux部署教程 #排序算法 #插入排序 #5G #AI论文写作工具 #学术论文创作 #论文效率提升 #MBA论文写作 #memcache #系统升级 #信创 #anaconda #虚拟环境 #js逆向 #逆向 #混淆 #mariadb #RAID #磁盘 #系统管理 #服务 #并发 #源代码管理 #ai编程 #编辑器 #数据采集 #clawdbot #QQbot #QQ #360AI图片精简版 #看图工具 #电脑看图工具 #360看图工具 #AI看图工具 #labview #集成测试 #国产化OS #研发管理 #禅道 #禅道云端部署 #求职招聘 #RPA #影刀RPA #守护进程 #复用 #screen #winscp #.net #ProCAST2025 #ProCast #脱模 #顶出 #应力计算 #铸造仿真 #变形计算 #余行补位 #意义对谈 #余行论 #领导者定义计划 #sql注入 #网络攻击模型 #SQL #数模美赛 #bootstrap #Keycloak #Quarkus #AI编程需求分析 #就业 #osg #放大电路 #可信计算技术 #Deepseek #gpt-3 #azure #OpenAI #高可用 #故障 #优化 #SEO #Smokeping #企业架构治理 #电力企业IT架构 #IT架构设计 #Playbook #AI服务器 #命令模式 #电气工程 #C# # IndexTTS 2.0 # 自动化运维 #visual studio #知识图谱 #wordpress #雨云 #双指针 #微PE # GLM-4.6V-Flash-WEB # AI部署 #everything #AB包 #Tracker 服务器 #响应最快 #torrent 下载 #2026年 #Aria2 可用 #迅雷可用 #BT工具通用 #考试系统 #在线考试 #培训考试 #考试练习 #OCR #文字检测 #SSH Agent Forwarding # PyTorch # 容器化 #vuejs #Rust #Puppet # IndexTTS2 # TTS #长文本理解 #glm-4 #推理部署 #三维 #3D #三维重建 #pipeline #Transformers #NLP #react.js #CVE-2025-61686 #路径遍历高危漏洞 #Tetrazine-Acid #1380500-92-4 #需求分析 # GPU租赁 # 自建服务器 #junit #MinIO服务器启动与配置详解 #平板 #制造 #交通物流 #智能硬件 #未加引号服务路径 #IO #claude #Coze工作流 #AI Agent指挥官 #多智能体系统 #ddos #扩展屏应用开发 #域名注册 #新媒体运营 #网站建设 #国外域名 #HBA卡 #RAID卡 #GPU服务器 #8U #硬件架构 #fiddler #vnstat #监控 #HeyGem # 局域网访问 # 批量处理 #window10 #window11 #病毒 #DCOM进程 #系统进程资源占用高 #运维开发 #gerrit #ESP32 # OTA升级 # 黄山派 #支付 #GB28181 #SIP信令 #SpringBoot #视频监控 #WT-2026-0001 #QVD-2026-4572 #smartermail #智慧城市 #ModelEngine #银河麒麟操作系统 #openssh #华为交换机 #信创终端 #编程助手 #Node.js #漏洞检测 #CVE-2025-27210 #claude code #codex #code cli #ccusage #ambari #PyTorch 特性 #动态计算图 #张量(Tensor) #自动求导Autograd #GPU 加速 #生态系统与社区支持 #与其他框架的对比 #超时设置 #客户端/服务器 #网络编程 #copilot #金融投资Agent #Ascend #MindIE #tensorflow #muduo库 #KMP #ida #TRO #TRO侵权 #TRO和解 #硬盘克隆 #DiskGenius #glibc #打卡 #计算机英语翻译 #n8n #mybatis #防火墙 #jupyter #1024程序员节 #政务 #rust #Tokio #异步编程 #系统编程 #Pin #http服务器 #RAID技术 #存储 #内容运营 #产品运营 #CCE #Dify-LLM #Flexus #react native # 双因素认证 #LE Audio #BAP #可再生能源 #绿色算力 #风电 #漏洞挖掘 #Exchange #mapreduce #spine #uv #里氏替换原则 #b/s架构 #移动学习平台 #tcp/ip #智能路由器 #web3.py #llm #RustDesk #IndexTTS 2.0 #本地化部署 #三种参数 #参数的校验 #fastAPI #kong #Kong Audio #Kong Audio3 #KongAudio3 #空音3 #空音 #中国民乐 #计算机外设 #gpt #sizeof和strlen区别 #sizeof #strlen #计算数据类型字节数 #计算字符串长度 #树莓派4b安装系统 #idea #肿瘤相关巨噬细胞 #CXCL5 #信号通路 #胃癌 #mTOR #乐备实 #labex #我的世界服务器搭建 #minecraft #智能体来了 #生信 #pve #clamav #KMS激活 #文生视频 #CogVideoX #AI部署 #iphone #防排烟监控 #消防风机一体化 #BA楼宇自控 #DDC控制器 #IBMS集成系统 #全链路优化 #实战教程 #图像处理 #yolo #行为模式分析 #数据 #应用层 #跨领域 #敏感信息 #以太网温湿度气体多参量传感器 #以太网多合一传感器 #以太网环境监测终端 #可定制气体监测模组 #esp32 arduino #n8n解惑 #梁辰兴 #传输连接管理 #计算机网络基础 #简单数论 #埃氏筛法 #UEFI #BIOS #Legacy BIOS #homelab #Lattepanda #Jellyfin #Plex #Emby #Kodi #yolov12 #研究生life #聊天小程序 #sqlite #cursor #广播 #组播 #并发服务器 #JAVA #几何学 #拓扑学 #gpu #nvcc #cuda #nvidia #TensorRT # Triton # 推理优化 #Llama-Factory # 大模型推理 #adb #1panel #vmware #python学习路线 #python基础 #python进阶 #python标准库 # 服务器IP # 端口7860 #scala #ThingsBoard MCP #数字营销 #seo #无人机 #ICPC #健身房预约系统 #健身房管理系统 #健身管理系统 #debian # CUDA #改行学it # 服务器IP访问 # 端口映射 #paddlepaddle #机器视觉 #6D位姿 #dba #mssql #risc-v #2026AI元年 #年度趋势 #MIMO #OFDM #技术原理 #通信算法 #openEuler #CANN #ueditor导入word #ueditor导入pdf #google #search #LoRA # RTX 3090 # lora-scripts #CUDA #Triton #区间dp #二进制枚举 #图论 #硬件 #GNC #控制 #姿轨控 #网路编程 #百万并发 #docker-compose #wireshark #rtmp #题解 #图 #dijkstra #迪杰斯特拉 #串口服务器 #Modbus #IFix #VS Code调试配置 #ROS #收银台开源 #收银台接口 #东方仙盟 #仙盟创梦IDE #商业开源 #K8s #镜像 #集群自动化 #H5 #跨域 #发布上线后跨域报错 #请求接口跨域问题解决 #跨域请求代理配置 #request浏览器跨域 #screen 命令 #数码相机 #AutoDL #安全架构 #模型微调 #comfyui #黑群晖 #虚拟机 #无U盘 #纯小白 #kmeans #ajax #指针 #工厂模式 #fpga开发 #LVDS #高速ADC #DDR #游戏机 #JumpServer #xshell #host key #旅游 #UDP的API使用 #海外短剧 #海外短剧app开发 #海外短剧系统开发 #短剧APP #短剧APP开发 #短剧系统开发 #海外短剧项目 #开源社区 #国产基础软件 #AI框架 #春秋云境 #CVE-2020-5515 #Gunicorn #WSGI #Flask #并发模型 #容器化 #Python #性能调优 #振镜 #振镜焊接 #蓝湖 #Axure原型发布 #SAM3 #江协 #瑞萨 #OLED屏幕移植 #ceph #claudeCode #content7 # 目标检测 #hdfs #chat #Ubuntu #隐私合规 #网络安全保险 #法律风险 #风险管理 #React #Next #CVE-2025-55182 #RSC #SSH免密登录 #SAP #ebs #metaerp #oracle ebs # 串口服务器 # NPort5630 #Python办公自动化 #Python办公 #910B #昇腾 #旅游推荐管理系统 #旅游攻略 #typescript #框架搭建 #静脉曲张 #腿部健康 #SRS #流媒体 #直播 #spring native #远程访问 #远程办公 #飞网 #安全高效 #配置简单 #快递盒检测检测系统 #C语言 #vivado license #CVE-2025-68143 #CVE-2025-68144 #CVE-2025-68145 #公共MQTT服务器 #逆向工程 #ngrok #MQTT协议 #ONLYOFFICE #MCP 服务器 #反向代理 #zabbix #集成学习 #xeon #Nacos #galeweather.cn #高精度天气预报数据 #光伏功率预测 #风电功率预测 #高精度气象 #参数估计 #矩估计 #概率论 #统信UOS #搜狗输入法 #汇编 #WIN32汇编 #STUN # TURN # NAT穿透 #连接数据库报错 #UDP套接字编程 #UDP协议 #网络测试 #知识 #科普 #JT/T808 #车联网 #车载终端 #模拟器 #仿真器 #开发测试 #unity3d #服务器框架 #Fantasy #运动 #进程创建与终止 #xlwings #Excel #pytest #鼠大侠网络验证系统源码 #AI赋能盾构隧道巡检 #开启基建安全新篇章 #以注意力为核心 #YOLOv12 #AI隧道盾构场景 #盾构管壁缺陷病害异常检测预警 #隧道病害缺陷检测 # 黑屏模式 # TTS服务器 #卷积神经网络 #文件IO #输入输出流 #AI技术 #麒麟OS #文件管理 #NAS #文件服务器 #工业级串口服务器 #串口转以太网 #串口设备联网通讯模块 #串口服务器选型 #tcpdump #带宽 #流量 #大带宽 #mamba #LabVIEW知识 #LabVIEW程序 #LabVIEW功能 #鸿蒙系统 #系统安全 #车载系统 #凤希AI伴侣 #Kuikly #openharmony #scanf #printf #getchar #putchar #cin #cout #高级IO #reactor反应堆 #高考 #paddleocr #iot #rustdesk #Spring AI #STDIO协议 #Streamable-HTTP #McpTool注解 #服务器能力 #LangGraph #pencil #pencil.dev #设计 #Spring源码 #迁移重构 #代码迁移 #Dify #轻量化 #低配服务器 #工具集 #Claude #flume #Steam #饥荒联机版 #零代码平台 #AI开发 #榛樿鍒嗙被 #journalctl #LobeChat #vLLM #GPU加速 #p2p #环境搭建 #intellij-idea #database #儿童AI #图像生成 #pandas #CPU #监测 #ShaderGraph #图形 #Taiji #esp32教程 #高品质会员管理系统 #收银系统 #同城配送 #最好用的电商系统 #最好用的系统 #推荐的前十系统 #JAVA PHP 小程序 #ipv6 #黑客技术 #挖漏洞 #日志分析 #流量监控 #openlayers #bmap #tile #server # 显卡驱动备份 #EMC存储 #存储维护 #NetApp存储 #AI助手 #轻量大模型 #客户端 #DIY机器人工房 #grafana #eBPF #SSH反向隧道 # Miniconda # Jupyter远程访问 #ue4 #DedicatedServer #独立服务器 #专用服务器 #MC #nacos #银河麒麟aarch64 #uvicorn #uvloop #asgi #event #Cesium #交互设计 #智能避障 #企业存储 #RustFS #对象存储 #信令服务器 #Janus #MediaSoup #语义搜索 #嵌入模型 #Qwen3 #AI推理 #链表的销毁 #链表的排序 #链表倒置 #判断链表是否有环 #asp.net大文件上传 #asp.net大文件上传下载 #asp.net大文件上传源码 #ASP.NET断点续传 #asp.net上传文件夹 #sentinel #SSH别名 #Jetty # CosyVoice3 # 嵌入式服务器 #模块 #math #homework #http头信息 #人脸识别 #人脸核身 #活体检测 #身份认证与人脸对比 #微信公众号 #ping通服务器 #读不了内网数据库 #bug菌问答团队 #GPU ##租显卡 #web3 #建筑缺陷 #红外 #embedding #计算机现代史 # 公钥认证 #Android16 #音频性能实战 #音频进阶 #空间计算 #原型模式 #开发环境搭建 #戴尔服务器 #戴尔730 #装系统 #ip #智慧校园解决方案 #智慧校园选型 #智慧校园采购 #智慧校园软件 #智慧校园专项资金 #智慧校园定制开发 #模型上下文协议 #MultiServerMCPC #load_mcp_tools #load_mcp_prompt #代理 #智能化测试 #质量效能 #skills #playwright #持续测试 #职业和发展 #Deepoc #具身模型 #开发板 #未来 #自动化运维 #GATT服务器 #蓝牙低功耗 #dash # 远程访问 # 服务器IP配置 #捷配 #pcb工艺 #deepseek #创业管理 #财务管理 #团队协作 #创始人必修课 #数字化决策 #经营管理 #tdengine #涛思数据 #markdown #建站 #密码 #cpp #SSH公钥认证 # 安全加固 #练习 #基础练习 #循环 #九九乘法表 #计算机实现 #Proxmox VE #虚拟化 #Fun-ASR # 语音识别 # WebUI #动态规划 #字符串 #时间复杂度 #空间复杂度 #spring ai #oauth2 #DDD #tdd #昇腾300I DUO #vision pro #私域运营 #NPU #sqlmap # 远程运维 #c++20 #策略模式 #Qwen3-14B # 大模型部署 # 私有化AI #TFTP # 树莓派 # ARM架构 #opc ua #opc #性能测试 #LoadRunner #Miniconda # 环境迁移 #大剑师 #nodejs面试题 #vp9 #C2000 #TI #实时控制MCU #AI服务器电源 #攻防演练 #Java web #红队 #汇智网盘系统 #企业级云存储 #智能协作 #内网 #编程语言 #SQL调优 #EXPLAIN #慢查询日志 #分布式架构 #远程桌面 #远程控制 # GLM-TTS # 数据安全 #树莓派 #N8N #API限流 # 频率限制 # 令牌桶算法 #TTS私有化 # IndexTTS # 音色克隆 #提词器 #log #分布式数据库 #集中式数据库 #业务需求 #选型误 #WinDbg #Windows调试 #内存转储分析 #视频 #浏览器自动化 #python #雨云服务器 #Minecraft服务器 #教程 #MCSM面板 #6G #太赫兹 #无线通信 #频谱 #无线 #cascadeur #设计师 #SSH代理转发 #远程开发 #工作 #挖矿 #Linux病毒 #管道Pipe #system V #夏天云 #夏天云数据 #经济学 #uvx #uv pip #npx #Ruff # 服务器配置 # GPU #企业微信机器人 #本地大模型 #SSH跳转 #TTS #go # GPU集群 #容斥原理 #AI-native #智能一卡通 #门禁一卡通 #梯控一卡通 #电梯一卡通 #消费一卡通 #一卡通 #考勤一卡通 #milvus #知识库 #RK3576 #瑞芯微 #硬件设计 #html5 #WinSCP 下载安装教程 #SFTP #FTP工具 #服务器文件传输 #计算几何 #斜率 #方向归一化 #叉积 #个人博客 #浏览器指纹 # 键鼠锁定 #Anaconda配置云虚拟环境 #网络配置实战 #Web/FTP 服务访问 #计算机网络实验 #外网访问内网服务器 #Cisco 路由器配置 #静态端口映射 #网络运维 #智能体 #国企混改 #国企混改咨询 #国企混改战略规划 #曦望 #后端框架 #gRPC #注册中心 #AutoDL使用教程 #AI大模型训练 #linux常用命令 #PaddleOCR训练 #edge #迭代器模式 #观察者模式 #智能家居 #嵌入式编译 #ccache #distcc #openvino #手机检测 #课堂手机检测 # 数字人系统 # 远程部署 #非标机械设计 #数据迁移 #powerbi #Docker #puppeteer #贴图 #材质 #JavaScript #GESP4级 #GESP四级 #sort #滑动窗口 #运维工具 #GLM-4.6V-Flash-WEB # AI视觉 # 本地部署 #YOLOFuse # Base64编码 # 多模态检测 #DNS #Discord机器人 #云部署 #程序那些事 #娱乐 #计算机毕业设计 #程序定制 #毕设代做 #大作业 #课设 #nfs #iscsi #nas #音乐分类 #音频分析 #ViT模型 #Gradio应用 #SPA #单页应用 #服务器IO模型 #非阻塞轮询模型 #多任务并发模型 #异步信号模型 #多路复用模型 #ipmitool #BMC #领域驱动 #cocos2d #图形渲染 #YOLOv8 # Docker镜像 #测速 #iperf #iperf3 #学术生涯规划 #CCF目录 #基金申请 #职称评定 #论文发表 #科研评价 #顶会顶刊 #swagger #IndexTTS2 # 阿里云安骑士 # 木马查杀 #入侵 #日志排查 #Karalon #AI Test #remote-ssh #SA-PEKS # 关键词猜测攻击 # 盲签名 # 限速机制 #IT #技术 #ARM64 # DDColor # ComfyUI #CLI #langgraph.json #CMake #Make #C/C++ #Fluentd #Sonic #日志采集 #企业级存储 #网络设备 #工程实践 #排序 # 高并发部署 #vps #Anything-LLM #IDC服务器 #restful #大模型应用 #API调用 #PyInstaller打包运行 #服务端部署 #视频去字幕 #外卖配送 #软件 #本地生活 #电商系统 #商城 #UDP #欧拉 #simulink #aiohttp #asyncio #异步 #模版 #函数 #类 # 水冷服务器 # 风冷服务器 #webpack #学术写作辅助 #论文创作效率提升 #AI写论文实测 #AI生成 # outputs目录 # 自动化 #翻译 #开源工具 #SSH保活 #强化学习 #策略梯度 #REINFORCE #蒙特卡洛 #WEB #rdp #elk #决策树 #HistoryServer #Spark #YARN #jobhistory #二值化 #Canny边缘检测 #轮廓检测 #透视变换 #同步WebServer服务器 #ESP32网页服务器 #轻量级http服务器 #ESP32物联网 #大模型部署 #mindie #ComfyUI # 推理服务器 #libosinfo #软件需求 #联机教程 #局域网联机 #局域网联机教程 #局域网游戏 #模拟退火算法 #Hadoop #寄存器 #LED #设备树 #GPIO #vrrp #脑裂 #keepalived主备 #高可用主备都持有VIP #SMP(软件制作平台) #EOM(企业经营模型) #应用系统 #文件传输 #电脑文件传输 #电脑传输文件 #电脑怎么传输文件到另一台电脑 #电脑传输文件到另一台电脑 #eureka #飞牛NAS #NVR #EasyNVR #项目申报系统 #项目申报管理 #项目申报 #企业项目申报 #C₃₂H₄₅N₇O₁₁S₂ #Aluminium #Google #学工管理系统 #学工一体化平台 #学工软件二次开发 #学工平台定制开发 #学工系统服务商 #学工系统源头厂家 #智慧校园学工系统 #rtsp #转发 #cocoa #turn #ICE #信创国产化 #达梦数据库 #RXT4090显卡 #RTX4090 #深度学习服务器 #硬件选型 #I/O #Lenyiin #群晖 #音乐 #Shiro #反序列化漏洞 #CVE-2016-4437 #多接口并发 #首页优化 #idm #网站 #截图工具 #批量处理图片 #图片格式转换 #图片裁剪 #React安全 #漏洞分析 #Next.js #温湿度监控 #WhatsApp通知 #IoT #MySQL #X11转发 #可撤销IBE #服务器辅助 #私钥更新 #安全性证明 #双线性Diffie-Hellman #eclipse #VibeVoice # 语音合成 # 云服务器 #视觉检测 #SMTP # 内容安全 # Qwen3Guard #web服务器 # AI翻译机 # 实时翻译 #VPS #搭建 #土地承包延包 #领码SPARK #aPaaS+iPaaS #智能审核 #档案数字化 #webgl #数据访问 #npm #遛狗 #插件 #r-tree #心理健康服务平台 #心理健康系统 #心理服务平台 #心理健康小程序 #北京百思可瑞教育 #百思可瑞教育 #北京百思教育 #门禁 #读卡器 #梯控 #门禁读卡器 #梯控读卡器 #IC卡读卡器 #ms-swift # 一锤定音 # 大模型微调 #算法备案 #MS #Materials #UOS #海光K100 #统信 #国产PLM #瑞华丽PLM #瑞华丽 #PLM #MOXA #esb接口 #走处理类报异常 #dynadot #域名 #muduo #EventLoop #回归 #前端界面 #TLS协议 #HTTPS #漏洞修复 #运维安全 #大学生 #smtp #smtp服务器 #PHP #intellij idea #esp32 #mosquito # 远程连接 #fs7TF # GPU服务器 # tmux #程序开发 #程序设计 #源码 #mvc #idc #cosmic #效率神器 #办公技巧 #自动化工具 #Windows技巧 #打工人必备 #AI 推理 #NV #鲲鹏 #npu #ansys #ansys问题解决办法 #数字孪生 #三维可视化 #VSCode # 远程开发 # Qwen3Guard-Gen-8B #远程软件 #SSH跳板机 # Python3.11 #处理器 #rsync # 数据同步 #随机森林 #西门子 #汇川 #Blazor #zygote #应用进程 #screen命令 # Connection refused #晶振 #teamviewer # GLM # 服务连通性 #AI+ #coze #AI入门 #AI赋能 #计组 #数电 #Apple AI #Apple 人工智能 #FoundationModel #Summarize #SwiftUI #运维 #智能梯控 #OpenManage #Socket网络编程 #AI视频创作系统 #AI视频创作 #AI创作系统 #AI视频生成 #AI工具 #AI创作工具 #渗透测试 #网安应急响应 #华为od机试 #华为od机考 #华为od最新上机考试题库 #华为OD题库 #od机考题库 #数据恢复 #视频恢复 #视频修复 #RAID5恢复 #流媒体服务器恢复 #TcpServer #accept #高并发服务器 #铬锐特 #uv胶 #紫外线胶水 #光固化胶水 #胶粘剂 #Python3.11 # 高并发 #服务器操作系统 #win10 #qemu #web server #请求处理流程 #智能电视 #服务器开启 TLS v1.2 #IISCrypto 使用教程 #TLS 协议配置 #IIS 安全设置 #服务器运维工具 #上下文工程 #langgraph #意图识别 #LangFlow # 轻量化镜像 # 边缘计算 #传感器 #MicroPython #WRF #WRFDA #Socket #套接字 #I/O多路复用 #字节序 #工程设计 #预混 #扩散 #燃烧知识 #层流 #湍流 #weston #x11 #x11显示服务器 #HarmonyOS # 批量部署 #RSO #机器人操作系统 #高精度农业气象 #mtgsig #美团医药 #美团医药mtgsig #美团医药mtgsig1.2 #opc模拟服务器 #vertx #vert.x #vertx4 #runOnContext # 大模型 # ms-swift #一周会议与活动 #ICLR #CCF #服务器线程 # SSL通信 # 动态结构体 #水性三防漆 #UV三防漆 #有机硅三防漆 #聚氨酯三防漆 #醇酸树脂三防漆 #丙烯酸三防漆 #超算中心 #PBS #lsf #报表制作 #职场 #数据可视化 #用数据讲故事 #语音生成 #机器人学习 #证书 #在线培训系统 #CosyVoice3 # IP配置 # 0.0.0.0 #路由器 #个人助理 #数字员工 #JNI #istio #服务发现 #gateway #OSS #CDN #最佳实践 #视觉理解 #Moondream2 #多模态AI #MCP服务器注解 #异步支持 #方法筛选 #声明式编程 #自动筛选机制 #铁路桥梁 #DIC技术 #箱梁试验 #裂纹监测 #四点弯曲 #勒索病毒 #勒索软件 #加密算法 #.bixi勒索病毒 #数据加密 #OPCUA #CA证书 #麦克风权限 #访问麦克风并录制音频 #麦克风录制音频后在线播放 #用户拒绝访问麦克风权限怎么办 #uniapp 安卓 苹果ios #将音频保存本地或上传服务器 #主板 #电源 #青少年编程 #KMS #slmgr #宝塔面板部署RustDesk #RustDesk远程控制手机 #手机远程控制 #dlms #dlms协议 #逻辑设备 #逻辑设置间权限 #星际航行 #安全威胁分析 #闲置物品交易系统 #agentic bi #论文复现 #IPv6 #AI应用编程 #Host #SSRF #移动端h5网页 #调用浏览器摄像头并拍照 #开启摄像头权限 #拍照后查看与上传服务器端 #摄像头黑屏打不开问题 #AI Agent #开发者工具 #Minecraft #PaperMC #我的世界服务器 #前端开发 #EN4FE #C #自由表达演说平台 #演说 #国产开源制品管理工具 #Hadess #一文上手 #范式 #moltbot #ET模式 #非阻塞 #MapGIS #云服务 #云门户 #IGServer # 模型训练 #节日 #ESP32编译服务器 #Ping #DNS域名解析 #期刊 #SCI #多进程 #python技巧 #地理 #遥感 #面向对象 #taro #图书馆 #自习室 # REST API #芦笋提词器 #租显卡 #训练推理 #游戏服务器断线 # keep-alive #bigtop #hdp #hue #kerberos #zotero #WebDAV #同步失败 #代理模式 #api #key #AI作画 #国产操作系统 #V11 #kylinos #raid #raid阵列 #API #CSDN #Syslog #系统日志 #日志监控 #生产服务器问题查询 #日志过滤 #Autodl私有云 #深度服务器配置 #VoxCPM-1.5-TTS # 云端GPU # PyCharm宕机 #TCP服务器 #语音控制 #传统行业 #攻击溯源 #编程 #IIS Crypto #blender #warp #数智红包 #商业变革 #格式工厂 #材料工程 #FASTMCP #DooTask # 硬件配置 #ZooKeeper #ZooKeeper面试题 #面试宝典 #深入解析 #算力一体机 #ai算力服务器 #Go并发 #高并发架构 #Goroutine #系统设计 #net core #kestrel #web-server #asp.net-core #交换机 #三层交换机 #synchronized #锁 #reentrantlock #高斯溅射 #内存接口 # 澜起科技 # 服务器主板 #coffeescript #tornado #H3C #说话人验证 #声纹识别 #CAM++ #云开发 #性能 #RAM #KMS 激活 #AI智能棋盘 #Rock Pi S #x86_64 #数字人系统 #MC群组服务器 # 服务器迁移 # 回滚方案 #BoringSSL #proc #云计算运维 #asp.net上传大文件 #PTP_1588 #gPTP #语义检索 #文本向量化 #GTE-Pro #企业AI #unix #c++高并发 #reactjs #CS2 #debian13 #网络 #Windows # ARM服务器 # 鲲鹏 #IntelliJ IDEA #neo4j #NoSQL #uip #Coturn #因果学习 #k8s #银河麒麟服务器系统 # 代理转发 #seata #TC/TM/RM #进程等待 #wait #waitpid # 离线AI #万悟 #联通元景 #开发实战 #SMARC #ARM #SIP服务器 #语音服务器 #VoIP #SIP协议 #Kylin-Server #服务器安装 #短剧 #短剧小程序 #短剧系统 #微剧 # 智能运维 # 性能瓶颈分析 #hibernate #nosql #devops #文件上传漏洞 #claude-code #bug #I/O模型 #水平触发、边缘触发 #多路复用 #农产品物流管理 #物流管理系统 #农产品物流系统 #农产品物流 #一人公司 #独立开发者 #CTF #Comate #文本生成 #CPU推理 #C++ UA Server #SDK #跨平台开发 #4U8卡 AI 服务器 ##AI 服务器选型指南 #GPU 互联 #GPU算力 # SSH #arm64 #SSH复用 #磁盘配额 #存储管理 #形考作业 #国家开放大学 #系统运维 #服务器解析漏洞 #nodejs #云服务器选购 #Saas #贝叶斯优化深度学习 #NFC #智能公交 #服务器计费 #FP-增长 #outlook #错误代码2603 #无网络连接 #2603 #结构与算法 #safari #SSH密钥 #ETL管道 #向量存储 #数据预处理 #DocumentReader #声源定位 #MUSIC #AI电商客服 #memory mcp #Cursor #RGFNet多模态目标检测 #可见光-红外图像融合目标检测 #TGRS 2025顶刊论文 #YOLO多模态创新改进 #YOLO多模态融合属于发文热点 #IO编程 #NSP #下一状态预测 #aigc #智能制造 #供应链管理 #工业工程 #库存管理 #ServBay #量子计算 #RK3588 #RK3588J #评估板 #核心板 #嵌入式开发 # 网络延迟 #ranger #MySQL8.0 #代理服务器 #EtherCAT #XMC4800 #工业自动化 #智能体对传统行业冲击 #行业转型 #resnet50 #分类识别训练 #HTML #web前端 #网页开发 #odoo #appche #Spire.Office #Xshell #Finalshell #生物信息学 #组学 #ftp #sftp #uniapp #合法域名校验出错 #服务器域名配置不生效 #request域名配置 #已经配置好了但还是报错 #uniapp微信小程序 #华为机试 #OpenHarmony #cpu #samba # 批量管理 #Matrox MIL #二次开发 #ASR #SenseVoice #PN 结 #ArkUI #ArkTS #鸿蒙开发 #自动化巡检 #RWK35xx #语音流 #实时传输 #node #0day漏洞 #DDoS攻击 #漏洞排查 #懒汉式 #恶汉式 #手机h5网页浏览器 #安卓app #苹果ios APP #手机电脑开启摄像头并排查 #win11 # DIY主机 # 交叉编译 #算法笔记 #pxe ##python学习笔记 #python中with语句详解 #语音合成 #c #MinIO #express #cherry studio #gmssh #宝塔 #CS336 #Assignment #Experiments #TinyStories #Ablation #free #vmstat #sar #实时音视频 #Zernike #hcipy #光学设计 #像差仿真 #SEW #赛威 #SEW变频器 #系统安装 #r语言 #POC #问答 #交付 #STDIO传输 #SSE传输 #WebMVC #WebFlux #Java生成PDF #Freemarker转PDF #PDFBox转图片 #HTML转PDF乱码解决 #AE #智慧社区 #管理系统 #ARMv8 #内存模型 #内存屏障 #边缘AI # Kontron # SMARC-sAMX8 #canvas层级太高 #canvas遮挡问题 #盖住其他元素 #苹果ios手机 #安卓手机 #调整画布层级 #okhttp #AITechLab #cpp-python #CUDA版本 #小艺 #搜索 #Spring AOP #AI应用 #基础语法 #标识符 #常量与变量 #数据类型 #运算符与表达式 #多模态 #微调 #超参 #LLamafactory #全文检索 #总体设计 #电源树 #框图 #Linux多线程 #Archcraft #Linly-Talker # 数字人 # 服务器稳定性 #poll #向量嵌入 #docker安装seata #信息收集 #Langchain-Chatchat # 国产化服务器 # 信创 #glances # 模型微调 #程序员转型 #人脸活体检测 #live-pusher #动作引导 #张嘴眨眼摇头 #苹果ios安卓完美兼容 #gnu #RTSP #Live555 #流媒体服务器 #duckdb #人脸识别sdk #视频编解码 #VMware创建虚拟机 #m3u8 #HLS #移动端H5网页 #APP安卓苹果ios #监控画面 直播视频流 #Zabbix #cesium #可视化 #阿里云RDS #测试网 #erc-20 #独立链 #polkadot #开关电源 #热敏电阻 #PTC热敏电阻 #身体实验室 #健康认知重构 #微行动 #NEAT效应 #亚健康自救 #ICT人 #gpio #AI教材写作工具 #AI创作技术 #教材编写实战 #创作效率优化 #Termux #Samba #数据库架构 # 权限修复 #Qwen3-VL # 服务状态监控 # 视觉语言模型 #SQL注入主机 #tekton #Highcharts #插件封装 #传媒 #隐函数 #常微分方程 #偏微分方程 #线性微分方程 #线性方程组 #非线性方程组 #复变函数 #UDP服务器 #recvfrom函数 #递归 #线性dp #VMWare Tool #Cubase #Cubase15 #Cubase14 #Cubase12 #Cubase13 #Cubase 15 Pro #Cubase 14 Pro #Ward #H5网页 #网页白屏 #H5页面空白 #资源加载问题 #打包部署后网页打不开 #HBuilderX #A2A #GenAI #直流无刷电机 #六步换相 #WAN2.2 #网络安全大赛 #日志模块 #VMware Workstation16 #音诺ai翻译机 #AI翻译机 # Ampere Altra Max #sklearn #lucene #DAG #奈飞工厂算法挑战赛 #大模型呼叫 #外呼系统 #AI外呼 #外呼系统推荐 #智能客服 #外呼 #算力建设 #泛型 #接口 #抽象类 #面向对象设计 #实时检测 #GitPuk #国产开源免费代码管理工具 #Arbess #cicd工具 #b树 #xml # ControlMaster #HarmonyOS APP #系统故障 #硬盘修复 #电梯 #电梯运力 #电梯门禁 # 高温监控 #bond #服务器链路聚合 #网卡绑定 #数据报系统 #unitask #llvm #omv8 #can #2025年 #Gateway #认证服务器集成详解 #AI工具集成 #容器化部署 #AI教程 #CMC #adobe #基金 #股票 # child_process #智能合约 #车载嵌入式 #ossinsight #SQL注入 #WAF绕过 #ocr #lprnet #车牌识别 #crnn #车牌检测 #分子动力学 #化工仿真 #小智 #usb #通信协议 #session #安全性测试 #标准化事件委托 #工序流程工艺路径 #业务流程标准化 #Beidou #北斗 #SSR #电子电气架构 #系统工程与系统架构的内涵 #Routine #starrocks #L6 #L10 #L9 #远程更新 #缓存更新 #多指令适配 #物料关联计划 #千问 #Prometheus #海量数据存储 #防毒面罩 #防尘面罩 #composer #symfony #java-zookeeper #个人电脑 #AirDrop #昭和仙君 #个性化推荐 #BERT模型 #vncdotool #链接VNC服务器 #如何隐藏光标 #思爱普 #SAP S/4HANA #ABAP #NetWeaver #FHSS #r语言-4.2.1 #语言 #人形机器人 #人机交互 #软件构建 #统信操作系统 #文档识别 #DeepSeek-OCR-2 #信创适配 #YOLO识别 #YOLO环境搭建Windows #YOLO环境搭建Ubuntu #jquery #fork函数 #进程创建 #进程终止 #JADX-AI 插件 #boltbot #DuckDB #协议 #Arduino BLDC #核辐射区域探测机器人