精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

C++ 標準庫容器與算法淺析(附模板入門 + 全示例用法)

開發 前端
在 Python 中,標準容器使用非常直觀,如?list、dict、set?等。而在 C++ 中,標準模板庫 STL 提供了功能強大但略顯復雜的泛型容器體系。

在 Python 中,標準容器使用非常直觀,如 list、dict、set 等。而在 C++ 中,標準模板庫 STL 提供了功能強大但略顯復雜的泛型容器體系。本篇將完整梳理 C++ 中常用容器的使用方式、操作方法,并結合泛型模板與算法庫,作為 C++ 泛型編程的入門實戰筆記。

STL 簡介

STL(Standard Template Library)是 C++ 的標準模板庫,核心組成包括:

  • 容器(Container):如 vectormapsetstackqueue 等
  • 算法(Algorithm):如 sortfindcount_iffor_each 等
  • 迭代器(Iterator):用于遍歷容器,作為容器和算法之間的橋梁
  • 函數對象(Function Object):如比較器、Lambda 表達式

?? 1. 常用容器與典型操作大全

vector(動態數組)

#include <vector>
#include <iostream>
using namespace std;

int main() {
    vector<int> nums = {1, 2, 3};           // 初始化
    nums.push_back(4);                      // 添加元素
    nums[1] = 10;                           // 修改元素
    cout << nums.at(1) << endl;            // 安全訪問(帶范圍檢查)
    nums.pop_back();                        // 刪除末尾元素
    cout << "Size: " << nums.size() << endl;

    // 遍歷 - 推薦方式
    for (const auto& val : nums) {          // const 避免拷貝 & 引用提升性能
        cout << val << " ";
    }
    nums.clear();                           // 清空所有元素
}
// 輸出
10
Size: 3
1 10 3

特性:連續內存,支持隨機訪問。類似 Python 中的 list

list(雙向鏈表)

#include <list>
#include <iostream>
using namespace std;

int main() {
    list<int> lst = {1, 2, 3};              // 初始化
    lst.push_back(4);                       // 添加到尾部
    lst.push_front(0);                      // 添加到頭部

    lst.remove(2);                          // 刪除值為 2 的元素
    lst.reverse();                          // 反轉鏈表

    for (auto it = lst.begin(); it != lst.end(); ++it) {
        cout << *it << " ";
    }
}
// 輸出
4 3 1 0

特性:雙向鏈表,插入刪除效率高。不支持隨機訪問。Python 中無對應結構。

map(有序字典)

#include <map>
#include <iostream>
using namespace std;

int main() {
    map<string, int> scores;               // 默認升序(基于 <)

    scores["Tom"] = 90;
    scores["Jerry"] = 85;

    scores.erase("Tom");                   // 刪除元素
    cout << scores.count("Tom") << endl;   // 查找元素
    cout << scores.count("Jerry") << endl;   // 查找元素

    for (const auto& [key, val] : scores) { // 結構化綁定(C++17 起)
        cout << key << ": " << val << endl;
    }

    scores.clear();                        // 清空
}
// 輸出
0
1
Jerry: 85

特性:紅黑樹實現,有序存儲。類似 Python 的 dict(但有序性不同)。

unordered_map(無序字典)

#include <unordered_map>
#include <iostream>
using namespace std;

int main() {
    unordered_map<string, int> freq = {
        {"a", 1}, {"b", 2}
    };

    freq["c"] = 3;                           // 添加新鍵值對(自動插入)

    if (freq.find("a") != freq.end()) {     // 使用 find 查找鍵
        cout << "Found a" << endl;
    }

    for (const auto& [key, val] : freq) {   // C++17 結構化綁定遍歷
        cout << key << ": " << val << endl;
    }
}
// 輸出
Found a
b: 2
c: 3
a: 1

特性:哈希表實現,無序存儲。性能優于 map,但不保證順序。

set(有序集合)

#include <set>
#include <iostream>
using namespace std;

int main() {
    set<int> s = {3, 1, 4, 1, 2};           // 自動去重,默認升序排序

    s.insert(5);                            // 插入元素
    s.erase(1);                             // 刪除特定元素

    for (int val : s) {                     // 范圍 for 遍歷
        cout << val << endl;
    }

    cout << "Has 4? " << (s.count(4) > 0) << endl; // 查找元素
}
// 輸出
2
3
4
5
Has 4? 1

類似 Python 的 set,但 C++ 中默認是有序集合。

unordered_set(無序集合)

#include <unordered_set>
#include <iostream>
using namespace std;

int main() {
    unordered_set<string> tags = {"cpp", "stl", "template"}; // 初始化集合

    tags.insert("lambda");                   // 插入新元素
    tags.erase("stl");                       // 刪除已有元素

    for (const auto& tag : tags) {           // 遍歷所有元素(順序不保證)
        cout << tag << endl;
    }
}
// 輸出
lambda
template
cpp

與 set 類似但不排序,哈希實現,插入/刪除性能更高。

tuple(固定結構組)

#include <tuple>
#include <iostream>
using namespace std;

int main() {
    tuple<int, string, double> t(1, "hello", 3.14); // 定義一個三元組

    cout << get<0>(t) << endl;   // 訪問第一個元素(索引從 0 開始)
    cout << get<1>(t) << endl;   // 第二個元素
}
// 輸出
1
hello

可用于函數返回多個值,類似 Python 中的 tuple。但類型必須聲明。

stack(棧)

#include <stack>
#include <iostream>
using namespace std;

int main() {
    stack<int> stk;
    stk.push(1);                          // 入棧
    stk.push(2);

    cout << stk.top() << endl;           // 查看棧頂元素(不移除)
    stk.pop();                           // 彈出棧頂
}
// 輸出
2

 LIFO(后進先出)結構。Python 中需手動實現。

queue(隊列)

#include <queue>
#include <iostream>
using namespace std;

int main() {
    queue<int> q;
    q.push(1);                           // 入隊(添加到尾部)
    q.push(2);

    cout << q.front() << endl;          // 查看隊首元素
    q.pop();                            // 出隊(移除隊首)
}
// 輸出
1

FIFO(先進先出)結構。常用于任務調度。

priority_queue(優先隊列 / 堆)

#include <queue>
#include <vector>
#include <iostream>
using namespace std;

int main() {
    priority_queue<int> pq;             // 默認是最大堆(較大元素優先)
    pq.push(3);
    pq.push(1);
    pq.push(5);

    while (!pq.empty()) {
        cout << pq.top() << " ";        // 取堆頂元素(最大值)
        pq.pop();                       // 移除堆頂
    }
}
// 輸出
5 3 1

等價于 Python 的 heapq(但默認是最大堆)

算法函數使用示例

#include <algorithm>
#include <vector>
#include <iostream>
using namespace std;

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

    cout << "原始數據: ";
    for (int x : v) cout << x << " ";
    cout << endl;

    sort(v.begin(), v.end()); // 升序排序

    cout << "排序后: ";
    for (int x : v) cout << x << " ";
    cout << endl;

    reverse(v.begin(), v.end()); // 反轉

    cout << "反轉后: ";
    for (int x : v) cout << x << " ";
    cout << endl;

    auto it = find(v.begin(), v.end(), 3); // 查找值為3

    if (it != v.end()) {
        cout << "找到元素 3,位置索引為: " << distance(v.begin(), it) << endl;
    } else {
        cout << "未找到元素 3" << endl;
    }

    // 使用 Lambda 表達式統計 >4 的數量
    int cnt = count_if(v.begin(), v.end(), [](int x){ return x > 4; });
    cout << "大于 4 的元素個數: " << cnt << endl;

    return 0;
}
// 輸出
原始數據: 5381
排序后: 1358
反轉后: 8531
找到元素 3,位置索引為: 2
大于 4 的元素個數: 2

模板函數入門

#include <iostream>  // ?? 引入輸入輸出流頭文件

// 泛型函數,編譯期根據類型生成對應版本
template<typename T>
T max_val(T a, T b) {
    return (a > b) ? a : b;
}

int main(){
    // 使用方式
    std::cout << max_val(3, 7) << std::endl;       // int
    std::cout << max_val(3.14, 2.71) << std::endl; // double
    return 0;
}
// 輸出
7
3.14

與 Python 動態類型類似,但 C++ 在編譯期完成類型匹配與優化,性能更高,錯誤更早暴露。

綜合實例

#include <iostream>      // 標準輸入輸出流
#include <vector>        // STL 動態數組容器
#include <algorithm>     // STL 算法頭,如 count_if

// 泛型函數:統計 vector 中大于指定閾值的元素個數
// 模板函數接收任意類型的 vector,如 int、double 等
template<typename T>
int count_gt(const std::vector<T>& vec, T threshold) {
    // std::count_if 用于統計滿足條件的元素數量
    // Lambda 表達式 [=](T x){...} 捕獲 threshold 變量,判斷 x > threshold
    return std::count_if(vec.begin(), vec.end(), [=](T x) {
        return x > threshold;
    });
}

int main() {
    // 示例 1:整型向量
    std::vector<int> iv = {1, 4, 2, 7, 5};      // 初始化 int 類型 vector
    // 示例 2:浮點型向量
    std::vector<double> dv = {1.2, 2.5, 0.9, 3.3}; // 初始化 double 類型 vector

    // 調用模板函數 count_gt,判斷元素 > 3 的數量
    // 輸出結果應為:3 (即 4, 7, 5)
    std::cout << count_gt(iv, 3) << std::endl;

    // 浮點數版本,判斷元素 > 1.5 的數量
    // 輸出結果應為:2 (即 2.5, 3.3)
    std::cout << count_gt(dv, 1.5) << std::endl;

    return 0;
}
// 輸出
3
2

?? 模板函數 count_gt 支持任意類型容器,搭配 Lambda 與 STL 算法實現靈活、類型安全的復用邏輯。

小結

? STL 提供了結構統一、高效、安全的容器與算法組合,是 C++ 開發的核心工具

? 多數容器功能可類比 Python,但類型系統更強、性能更高

? 模板與算法使 C++ 代碼更通用、復用性更強

? 推薦從 vectormapsettuple 入門,逐步掌握 stackqueuepriority_queue

責任編輯:武曉燕 來源: 不止于python
相關推薦

2010-01-27 15:05:04

C++標準化

2010-01-26 13:55:07

C++標準模板庫

2010-02-06 16:59:19

C++ kmp算法模板

2022-09-22 10:22:36

C++編程語言代碼

2010-01-27 16:05:06

C++堆棧

2010-01-21 09:34:57

C++語法

2009-08-13 17:30:30

C#構造函數

2010-01-27 17:16:52

C++構造函數

2010-01-20 10:19:55

C++數組

2010-01-25 09:57:39

C++函數參數

2021-10-19 14:04:28

C++類型數字

2010-01-26 14:35:11

C++關鍵字

2010-01-27 15:46:15

學習C++效率

2023-05-30 14:56:18

Docker開發容器

2010-01-08 16:00:46

C++編譯器

2010-01-11 10:34:22

C++程序

2010-01-21 16:18:06

C++語言

2010-01-25 14:18:46

C++對象模型

2010-01-21 13:48:30

C++基類

2010-02-06 17:39:52

C++ strtok
點贊
收藏

51CTO技術棧公眾號

中文字幕成人在线观看| 成人性生活免费看| 黄色软件在线观看| 中文欧美日韩| 亚洲欧美综合精品久久成人| 能在线观看的av网站| 亚洲精品承认| 成人不卡免费av| 欧美激情视频网址| 国产白袜脚足j棉袜在线观看| 日本在线视频网址| 国产成人8x视频一区二区| 亚洲18私人小影院| 91激情视频在线观看| 99久久婷婷国产综合精品首页| 国产偷国产偷亚洲高清人白洁| 国产精品三级美女白浆呻吟| xxxx日本少妇| 久草在线成人| 日韩美女在线视频| 激情综合网俺也去| 男女在线视频| 国产无人区一区二区三区| 成人区精品一区二区| 久久黄色小视频| 欧美肉体xxxx裸体137大胆| 日韩免费视频一区二区| 欧美激情成人网| 五月花成人网| 国产视频一区在线观看 | 午夜福利三级理论电影 | 亚洲大尺度视频在线观看| 久久av一区二区三区亚洲| 国产精品探花视频| 日韩专区在线视频| 欧美精品久久久久久久久| 国产精品18在线| 蜜桃国内精品久久久久软件9| 日韩欧美一级二级三级久久久| 噜噜噜久久亚洲精品国产品麻豆| caoporn免费在线| 91蜜桃传媒精品久久久一区二区| www.久久久| 亚洲天堂久久久久| 日韩黄色片在线观看| 午夜精品在线视频| 欧美精品一级片| 91精品天堂福利在线观看| 国产丝袜一区二区三区免费视频| 91亚洲一线产区二线产区| 国产免费区一区二区三视频免费 | 国产又黄又猛又爽| 日韩在线一区二区| 热久久99这里有精品| 日韩欧美三级在线观看| 狠狠噜噜久久| 欧美精品久久久久久久久久| 久草视频在线资源站| 91精品国产福利在线观看麻豆| 亚洲欧美精品一区| 日韩综合第一页| 亚洲国产精品免费视频| 欧美一区二区三区人| 欧美美女性视频| 四虎国产精品成人免费影视| 欧美在线免费观看视频| 欧美成人高潮一二区在线看| 超碰91在线观看| 亚洲人成伊人成综合网小说| 欧美在线视频二区| 成年人视频在线看| 中文字幕亚洲一区二区va在线| 品久久久久久久久久96高清| 国产1区2区3区在线| 久久久久久久久久久久久久久99| 欧美日韩国产三区| 成人精品一区二区| 一区二区中文视频| 一区二区三区在线视频111 | xxx一区二区| 成人性生活毛片| 亚洲视频一二| 欧美国产视频一区二区| 日韩xxxxxxxxx| 性伦欧美刺激片在线观看| 国产成人免费91av在线| 中文字幕免费在线看| 韩国一区二区视频| 91在线网站视频| 亚洲高清精品视频| 高清成人免费视频| 欧美精品123| 免费在线观看av网站| 亚洲综合男人的天堂| 日本www在线视频| 成人福利片在线| 日韩欧美一级二级三级久久久| 性囗交免费视频观看| 亚洲婷婷伊人| 久久精品国产综合| 国产一国产二国产三| 日精品一区二区| 亚洲最大的成人网| 懂色av成人一区二区三区| wwwwxxxxx欧美| 日本不卡一二三区| 污视频网站在线免费| 日本道色综合久久| 色哟哟网站在线观看| 国产亚洲第一伦理第一区| 欧美精品在线视频观看| 麻豆久久久久久久久久| 蜜桃一区二区三区四区| 亚洲综合av影视| 国际av在线| 亚洲一区中文在线| 999精品视频在线| 国产香蕉精品| 久久精彩免费视频| 日本韩国欧美中文字幕| 国产一区二区剧情av在线| 欧美日韩精品久久久免费观看| 国内精品不卡| 欧美性高清videossexo| 无码国产69精品久久久久网站 | 国产福利不卡视频| 日韩精品福利视频| 成人video亚洲精品| 在线观看av一区二区| 日韩精品人妻中文字幕有码| 99热国内精品| 91精品国产91久久久久久最新| 91中文字幕在线视频| 国产亚洲精品久| 999久久欧美人妻一区二区| 成人福利片在线| 亚洲系列中文字幕| 性色av免费观看| www.欧美精品一二区| 91香蕉视频网址| 久久av影院| 在线精品播放av| 黄色片视频免费| 国产成人亚洲精品青草天美| 91香蕉视频网址| 欧美日韩免费电影| 中文字幕精品在线视频| 天干夜夜爽爽日日日日| 91啪亚洲精品| 国产精品专区在线| 999色成人| 在线视频一区二区| 正在播放木下凛凛xv99| 国产日韩影视精品| 18岁视频在线观看| av资源久久| 国产裸体写真av一区二区 | 亚洲视频在线观看视频| 国产无遮挡又黄又爽在线观看| 久久99久久99小草精品免视看| 亚洲一区二区四区| 国产精品亚洲四区在线观看| 最新中文字幕亚洲| 天天干天天操天天操| 久久亚洲精精品中文字幕早川悠里 | 中文字幕日韩av| 国模私拍一区二区| 国产精品国产三级国产三级人妇 | 中文字幕在线观看一区二区三区| 欧美gay囗交囗交| 亚洲视频在线观看| 91精品国产乱码久久| 中文字幕一区二区三中文字幕| 精品久久久久久中文字幕2017| 波多野结衣在线观看一区二区三区 | 亚洲一级片在线播放| 美腿丝袜亚洲色图| 亚洲黄色网址在线观看| 国产精品一区二区三区美女| 2021国产精品视频| 成人高潮成人免费观看| 777欧美精品| 日本黄色片免费观看| 岛国av在线一区| 男女裸体影院高潮| 一区中文字幕| 国产成人一区二区在线| 蜜桃视频网站在线观看| 精品人伦一区二区色婷婷| 国产成人无码精品亚洲| 欧美高清在线一区| 日本少妇一区二区三区| 国产精品普通话对白| 欧美日韩在线播放一区二区| 国产成人77亚洲精品www| 欧美成在线观看| 黄色福利在线观看| 欧洲精品视频在线观看| 希岛爱理中文字幕| 26uuu国产在线精品一区二区| 99re精彩视频| a91a精品视频在线观看| 三区精品视频观看| 日韩免费精品| 欧美激情亚洲精品| av在线二区| 日韩限制级电影在线观看| 久久久精品视频在线| 国产日韩欧美精品电影三级在线| 成人三级做爰av| 青娱乐精品视频| 日本福利视频一区| 国产一区二区三区不卡视频网站| 国产九九精品视频| 亚洲无线看天堂av| 中文字幕精品一区久久久久| 亚洲色图狠狠干| 日韩一区二区三区免费观看| 无码一区二区三区在线观看| 亚洲一级二级三级在线免费观看| 欧美88888| www.久久精品| 女教师高潮黄又色视频| 蜜桃久久久久久| 免费日韩中文字幕| 日韩午夜av在线| 成年在线观看视频| 久久要要av| 日韩电影在线播放| 久久99精品国产自在现线| 91中文字幕一区| 999精品视频在线观看| 国产精品白嫩美女在线观看 | 四虎影视在线观看2413| 欧美刺激脚交jootjob| 国产又大又黄的视频| 欧日韩精品视频| 中文字幕激情小说| 一区二区高清免费观看影视大全| www中文在线| 久久精品视频网| 亚洲国产无码精品| proumb性欧美在线观看| 亚洲精品久久久久久| 国产精品一二一区| 污视频在线观看免费网站| 欧美a级理论片| 毛片av免费在线观看| 日韩午夜激情| 亚洲第一页在线视频| 999久久久精品国产| 亚洲欧美一区二区原创| 国模吧精品视频| 欧美日韩一区二区三区免费| 国产精品午夜一区二区三区| 免费国产一区| 国产午夜一区| 亚洲一区二区三区免费观看| 婷婷综合亚洲| 热这里只有精品| 亚洲区综合中文字幕日日| 欧美另类网站| 自拍视频一区| 亚洲欧美电影在线观看| 亚洲图区在线| 一区二区日本伦理| 欧美日韩黑人| 潘金莲一级淫片aaaaa免费看| 日韩电影免费网站| 午夜精品短视频| 天天超碰亚洲| 欧美狂野激情性xxxx在线观| 亚洲美女色禁图| 乱子伦视频在线看| 七七婷婷婷婷精品国产| 亚洲国产精品三区| 国产一区视频在线看| 一区二区在线免费观看视频| 粉嫩av一区二区三区粉嫩| 伊人久久一区二区三区| 91一区二区在线| 欧美一区二区三区粗大| 一区二区三区四区不卡在线 | 国产一区二区在线观看免费视频| 国产精一区二区三区| 精品国产一区在线| 欧美激情一区三区| 免费在线观看国产精品| 黄网动漫久久久| 中文字幕在线观看免费| 欧美成人性战久久| 亚洲成人第一区| 亚洲色图av在线| 日韩av官网| 国产精品久久久久秋霞鲁丝 | 三级欧美在线一区| 中文字幕22页| 成人免费观看男女羞羞视频| www.99热| 亚洲人成网站色在线观看| 五月激情六月丁香| 欧美视频精品在线观看| 国产喷水吹潮视频www| 日韩成人在线视频观看| 五月婷婷在线视频| 欧美人与性动交a欧美精品| 色8久久影院午夜场| 91在线播放视频| 国产亚洲电影| 日韩欧美一区三区| 国产一区二区久久| 高清国产在线观看| 黄色精品在线看| 亚洲xxx在线| 日韩中文字幕免费看| 成全电影大全在线观看| 国产在线观看精品一区二区三区| 欧美做受69| www.一区二区.com| 老司机免费视频一区二区| 精品夜夜澡人妻无码av| 亚洲一区视频在线| 亚洲系列在线观看| 亚洲四色影视在线观看| av资源在线播放| 91入口在线观看| 深爱激情综合| 欧美一级在线看| 国模娜娜一区二区三区| 手机看片日韩av| 日韩欧美在线网址| 日本人妻丰满熟妇久久久久久| 久久久999国产| 久久精品国产精品亚洲毛片| 欧美一区亚洲二区| 久久99伊人| 欧美激情一区二区三区p站| 亚洲婷婷综合色高清在线| www.久久久久久久| 亚洲高清在线观看| 欧美13一16娇小xxxx| 国产精品丝袜高跟| 神马电影久久| www.xxx亚洲| 国产亚洲一区字幕| 91视频在线视频| 精品国产一区二区三区忘忧草| 男人和女人做事情在线视频网站免费观看| 日本一区二区在线免费播放| 无码少妇一区二区三区| 亚洲在线不卡| 青娱乐精品视频| 91禁男男在线观看| 欧美在线观看禁18| 9191在线| 国产日韩中文字幕| 亚洲影视一区二区三区| 福利片一区二区三区| 国产片一区二区| 最新在线中文字幕| 久久国内精品一国内精品| 亚洲va欧美va人人爽成人影院| 久久精品无码中文字幕| 成人av先锋影音| 永久免费未视频| 日韩欧美国产不卡| 91九色porn在线资源| 国产亚洲欧美一区二区三区| 在线亚洲一区| 中文字幕黄色网址| 在线不卡中文字幕播放| 欧美v亚洲v| 国模精品娜娜一二三区| 爽爽淫人综合网网站| 任我爽在线视频| 精品久久99ma| 天天综合av| 色播亚洲视频在线观看| 久久精品国内一区二区三区| 少妇影院在线观看| 亚洲国产精品99久久| 麻豆mv在线看| 污视频在线免费观看一区二区三区| 美女看a上一区| 九九视频免费观看| 亚洲免费一级电影| 精品国产黄a∨片高清在线| 中文字幕中文字幕在线中一区高清| 精品亚洲aⅴ乱码一区二区三区| 久久婷婷综合国产| 国产亚洲xxx| 欧美激情福利| koreanbj精品视频一区| 国产精品国产三级国产aⅴ入口| 国产激情久久久久久熟女老人av| 欧美激情手机在线视频| 精品一区二区三区中文字幕老牛| 岛国大片在线免费观看| 欧美在线观看视频一区二区三区| 欧美aaa免费|