精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

精品欧美黑人一区二区三区| 亚洲日本一区二区三区| 2018国产精品视频| www.99热| 永久免费观看精品视频| 亚洲自拍偷拍九九九| 久久精品国产综合精品| 一级黄色片免费| 在线看片一区| 日韩一区视频在线| 青娱乐国产精品视频| 亚洲福利影院| 亚洲精品老司机| 日本电影一区二区三区| 性做久久久久久久| 秋霞成人午夜伦在线观看| 九九热这里只有在线精品视| 受虐m奴xxx在线观看| 欧洲精品99毛片免费高清观看 | а√天堂中文资源在线bt| 99久久久免费精品国产一区二区| 国产日韩在线亚洲字幕中文| 国产手机在线视频| 亚洲精品一区二区妖精| 亚洲欧美日韩国产成人| av漫画在线观看| 四虎影视国产精品| 日本高清不卡在线观看| 精品少妇人欧美激情在线观看| а√天堂中文在线资源bt在线| 成人高清伦理免费影院在线观看| 国产专区欧美专区| 在线免费观看国产精品| 日韩一级免费| 欧美另类在线观看| 九九热久久免费视频| 国产一区三区在线播放| 日韩av在线免费观看| 亚洲久久中文字幕| 朝桐光一区二区| 一本久道中文字幕精品亚洲嫩| 久久精品视频播放| 国产肥白大熟妇bbbb视频| 国产乱论精品| 精品久久久久久久人人人人传媒 | 国产欧美精品在线观看| 久久久久久欧美精品色一二三四| 亚洲黄色一级大片| 国产精品一级二级三级| 国产久一一精品| 波多野结衣人妻| 日韩精品午夜视频| 国产成人极品视频| 无码人妻丰满熟妇精品区| 国产偷自视频区视频一区二区| 久久久综合av| 日本熟妇成熟毛茸茸| 黄色成人在线网站| 久久人人97超碰精品888| 亚洲国产精品午夜在线观看| 激情六月综合| 97不卡在线视频| 依依成人综合网| 久久蜜桃精品| 国产日韩精品一区二区| 国产精品特级毛片一区二区三区| 精品亚洲免费视频| 91免费版网站在线观看| 亚洲老妇色熟女老太| av不卡免费在线观看| 免费看污久久久| 最新97超碰在线| 亚洲精品视频在线看| 日本人妻伦在线中文字幕| 男人天堂亚洲| 日本高清视频一区二区| 久久99999| 日本少妇精品亚洲第一区| 亚洲国产精品va| 一级肉体全黄裸片| 久久久久久久久国产一区| 欧美日韩成人在线观看| 91porny在线| 麻豆精品久久精品色综合| 亚洲va欧美va在线观看| 日韩中文字幕免费在线观看| 国产亚洲欧美激情| 国产精品久久久久久久久久久新郎 | 日韩欧美中文免费| 国产精品视频黄色| 日本精品视频| 国产亚洲欧美视频| 美国黄色小视频| 国产日韩精品视频一区二区三区| 国产精品久久一| 精品人妻无码一区二区色欲产成人| 99久久久精品免费观看国产蜜| 视频一区二区三| 久久电影网站| 欧美性大战久久久| www.四虎精品| 日韩成人三级| 高清欧美一区二区三区 | 欧美日韩国产系列| 182在线视频| 99热在线成人| 人九九综合九九宗合| a级片在线免费看| 国产亚洲女人久久久久毛片| 国产青草视频在线观看| 精品久久福利| 国产视频精品xxxx| 青青草原在线免费观看| 日本vs亚洲vs韩国一区三区 | 国产日产一区| 欧美激情小视频| 中文字幕视频免费观看| 99精品在线免费| 粉嫩av一区二区三区天美传媒| 暖暖成人免费视频| 亚洲第一区第一页| 少妇人妻丰满做爰xxx| 日韩成人免费电影| 精品国产综合| 麻豆福利在线观看| 欧美久久久久久久久久| a级在线免费观看| 中国女人久久久| 国产精品国产一区二区| www久久日com| 777亚洲妇女| 少妇视频在线播放| 日本特黄久久久高潮| 免费看成人午夜电影| bl视频在线免费观看| 日韩三区在线观看| 蜜臀av午夜精品久久| 看电视剧不卡顿的网站| 少妇特黄a一区二区三区| 欧美成人ⅴideosxxxxx| 日韩av网站电影| 国产黄色片视频| 成人性生交大片免费| 国产一级黄色录像片| 99久久久国产| 超薄丝袜一区二区| 国产美女裸体无遮挡免费视频| 中文字幕av一区二区三区免费看| 欧美精品一区二区三区免费播放| 婷婷综合福利| 欧美在线一级视频| 欧美黄色小说| 在线视频你懂得一区二区三区| 久久只有这里有精品| 久久中文欧美| 亚洲精品一区二区三| 国产日韩精品在线看| 欧美性猛交xxxx富婆弯腰| 亚洲国产精品成人综合久久久| 9色精品在线| 欧美日韩成人一区二区三区| 欧美xnxx| 久久精品国产亚洲精品2020| 国产成人av免费看| 亚洲福利国产精品| 野花社区视频在线观看| 巨乳诱惑日韩免费av| 日韩影片在线播放| 爱情电影网av一区二区| 欧美国产日产韩国视频| 人成免费电影一二三区在线观看| 在线一区二区视频| 午夜激情福利电影| 国产成人精品亚洲日本在线桃色 | 国产精品成人在线视频| 久久福利视频一区二区| 69精品丰满人妻无码视频a片| www.豆豆成人网.com| 欧美一级电影免费在线观看| 国产精品影院在线| 日韩欧美综合一区| 欧美一级特黄视频| 国产精品无遮挡| 九九九久久久久久久| 香蕉久久国产| 日本不卡一区二区三区四区| 国产精品qvod| 国产精品视频免费在线观看| 羞羞污视频在线观看| 亚洲久久久久久久久久| 国产又大又粗又长| 无码av免费一区二区三区试看 | 凸凹人妻人人澡人人添| 欧美日韩一区二区在线视频| 久草网在线观看| 国产欧美精品在线观看| 丰满人妻一区二区三区免费视频棣| 噜噜噜在线观看免费视频日韩| 中文字幕欧美日韩一区二区三区| 高清精品视频| 国产女人精品视频| 女人让男人操自己视频在线观看| 久久国产一区二区三区| 日韩偷拍自拍| 欧美成人伊人久久综合网| 亚洲中文一区二区| 亚洲一区二区三区美女| 欧美色图17p| 91美女在线视频| 97中文字幕在线观看| 麻豆极品一区二区三区| 人人干视频在线| 国产精品久久久久久影院8一贰佰| 精品视频第一区| 美女久久精品| 国产精品丝袜视频| 伊人网在线播放| 欧美激情视频网| 国产激情视频在线观看| 国产一区二区三区直播精品电影| 人妻精品一区二区三区| 制服.丝袜.亚洲.另类.中文| 啪啪小视频网站| 欧美性猛交丰臀xxxxx网站| 激情综合五月网| 亚洲人成影院在线观看| 国产一区二区三区四区在线| 久久免费偷拍视频| 国产精品无码一区二区三| 国产成人免费视频精品含羞草妖精| 99热这里只有精品在线播放| 久久人人超碰| 国产成人a亚洲精v品无码| 亚洲激情社区| 国产九色porny| 国产精品videosex极品| 在线观看av的网址| 91视频综合| 亚洲人成影视在线观看| 精品国产乱码| 日产精品一线二线三线芒果 | 最新av网址在线观看| 99久精品视频在线观看视频| 亚洲精品视频一区二区三区| 九九免费精品视频在线观看| 欧美精品与人动性物交免费看| 欧美一级一片| 欧美日韩免费观看一区| 啪啪亚洲精品| 神马影院我不卡| 欧美顶级大胆免费视频| 福利网在线观看| 欧美在线播放| 国产www免费| 日韩午夜精品| 十八禁视频网站在线观看| 丝袜国产日韩另类美女| 五月婷婷狠狠操| 美女精品一区二区| 亚洲欧美天堂在线| 国产激情视频一区二区三区欧美| 亚洲一区二区三区四区精品| 国产suv一区二区三区88区| 国产精品久久久久久在线观看| 成人动漫一区二区在线| www.久久国产| 国产精品久久久久久亚洲伦| 国产又粗又硬又长又爽| 亚洲一区二区三区四区中文字幕| 亚洲欧美在线观看视频| 色综合久久天天| 91久久久久久久久久久久| 91精品国产麻豆| 日本激情视频网站| 国产亚洲欧美日韩美女| 91中文在线| 日本sm极度另类视频| 亚洲精品aaa| 国产原创精品| 久久国产中文字幕| 欧美高清中文字幕| 久久久久久一区二区| 国产一级片自拍| 成人a免费在线看| 欧美 日韩 国产 成人 在线观看| 亚洲欧美日韩国产综合在线 | 国产高清一区二区三区视频| 国模私拍一区二区三区| 成人免费黄色| 国产精品视频在线免费观看| 国产伦精品一区二区三区视频 | 香蕉久久a毛片| 91小视频在线播放| 91色在线porny| 日韩三级久久久| 高跟丝袜一区二区三区| 国产精品欧美久久久久天天影视| 亚洲国产精品系列| 免费在线观看av网站| 91大神在线播放精品| 国产亚洲字幕| 视频一区二区三| 男女精品视频| 亚洲美女精品视频| 国产精品第五页| 亚洲色成人www永久网站| 精品福利在线导航| 老司机精品视频在线观看6| 亚洲精品福利视频| 毛片在线视频| 国产精品免费久久久久影院| 好吊妞视频这里有精品| 伊人天天久久大香线蕉av色| 性欧美videos另类喷潮| 又色又爽又黄18网站| 亚洲天堂免费看| 五月激情丁香网| 国产视频欧美视频| 欧美大片黄色| 亚洲一区二区自拍| 91影院成人| 黄色永久免费网站| 久久久久免费观看| 日韩av一区二区在线播放| 日韩欧美一二三| 久久久久久久久免费视频| 国产精品高潮呻吟久久av黑人| 日韩一级电影| 男人日女人视频网站| 国产福利91精品一区二区三区| 成人信息集中地| 欧美三级韩国三级日本三斤| 麻豆导航在线观看| 青青草国产精品一区二区| 欧美一区二区三区久久| 给我免费播放片在线观看| 国产成人自拍在线| 国产高清在线免费观看| 欧美一区二区成人| v片在线观看| 91久久国产综合久久蜜月精品| 仙踪林久久久久久久999| 日韩va在线观看| 亚洲天堂久久久久久久| 91国偷自产中文字幕久久| 久久久精品久久久| 91国产精品| 国产在线视频综合| 成人福利视频在线| 国内精品福利视频| 亚洲美女性视频| 成人自拍视频网| 一区二区免费电影| 国产伦精一区二区三区| 精品99在线观看| 精品一区二区亚洲| 99热播精品免费| 久久久成人精品一区二区三区| 蜜臀精品一区二区三区在线观看 | 91福利入口| 亚洲视频免费| mm131美女视频| 欧美午夜精品一区二区蜜桃 | 久久超碰99| mm131亚洲精品| 一区二区三区四区不卡在线| 天堂网2014av| 国产精品久久一区主播| 羞羞色午夜精品一区二区三区| 又色又爽又黄18网站| 狠狠躁18三区二区一区| 1769在线观看| y111111国产精品久久婷婷| 国产一级一区二区| 毛片久久久久久| 日韩免费福利电影在线观看| 日本在线影院| 亚洲一区二区三区精品视频| 懂色av中文一区二区三区| 国语对白永久免费| www亚洲精品| 精品福利一区| 性生活免费在线观看| 亚洲影视在线播放| 国自产拍在线网站网址视频| 91在线观看免费观看| 亚洲高清激情| 男女男精品视频网站| 亚洲精品在线电影| 亚洲综合在线电影| 99re6这里有精品热视频| 久久亚洲精华国产精华液 | 蜜桃视频成人m3u8| 国内外成人激情免费视频| www激情久久| 国产黄色一级大片| 国产精品美女久久久久av超清| 午夜精品999| 日韩福利在线视频| 亚洲精品国产精品自产a区红杏吧 亚洲精品国产精品乱码不99按摩 亚洲精品国产精品久久清纯直播 亚洲精品国产精品国自产在线 |