溫馨提示×

Linux C++編程中如何使用STL容器

小樊
72
2025-03-19 01:48:10
欄目: 編程語言

在Linux環境下使用C++ STL(Standard Template Library)容器進行編程,可以極大地提高開發效率和代碼的可讀性。以下是一些常用的STL容器及其基本用法:

1. 向量(std::vector

向量是一個動態數組,可以在運行時調整大小。

#include <iostream>
#include <vector>

int main() {
    std::vector<int> vec = {1, 2, 3, 4, 5};

    // 訪問元素
    std::cout << "First element: " << vec[0] << std::endl;

    // 添加元素
    vec.push_back(6);

    // 遍歷元素
    for (int i : vec) {
        std::cout<< i << " ";
    }
    std::cout << std::endl;

    return 0;
}

2. 列表(std::list

列表是一個雙向鏈表,支持高效的插入和刪除操作。

#include <iostream>
#include <list>

int main() {
    std::list<int> lst = {1, 2, 3, 4, 5};

    // 在頭部添加元素
    lst.push_front(0);

    // 遍歷元素
    for (int i : lst) {
        std::cout<< i << " ";
    }
    std::cout << std::endl;

    // 刪除元素
    lst.remove(3);

    return 0;
}

3. 雙端隊列(std::deque

雙端隊列是一個雙端隊列,支持在兩端高效地插入和刪除元素。

#include <iostream>
#include <deque>

int main() {
    std::deque<int> deq = {1, 2, 3, 4, 5};

    // 在頭部添加元素
    deq.push_front(0);

    // 在尾部添加元素
    deq.push_back(6);

    // 訪問元素
    std::cout << "First element: " << deq.front() << std::endl;
    std::cout << "Last element: " << deq.back() << std::endl;

    // 遍歷元素
    for (int i : deq) {
        std::cout<< i << " ";
    }
    std::cout << std::endl;

    return 0;
}

4. 棧(std::stack

棧是一個后進先出(LIFO)的數據結構。

#include <iostream>
#include <stack>

int main() {
    std::stack<int> stk;

    // 壓棧
    stk.push(1);
    stk.push(2);
    stk.push(3);

    // 訪問棧頂元素
    std::cout << "Top element: " << stk.top() << std::endl;

    // 彈棧
    stk.pop();

    // 遍歷棧元素
    while (!stk.empty()) {
        std::cout << stk.top() << " ";
        stk.pop();
    }
    std::cout << std::endl;

    return 0;
}

5. 隊列(std::queue

隊列是一個先進先出(FIFO)的數據結構。

#include <iostream>
#include <queue>

int main() {
    std::queue<int> que;

    // 入隊
    que.push(1);
    que.push(2);
    que.push(3);

    // 訪問隊首元素
    std::cout << "Front element: " << que.front() << std::endl;

    // 出隊
    que.pop();

    // 遍歷隊列元素
    while (!que.empty()) {
        std::cout << que.front() << " ";
        que.pop();
    }
    std::cout << std::endl;

    return 0;
}

6. 優先隊列(std::priority_queue

優先隊列是一個基于堆的數據結構,元素按優先級排序。

#include <iostream>
#include <queue>

int main() {
    std::priority_queue<int> pq;

    // 插入元素
    pq.push(3);
    pq.push(1);
    pq.push(4);
    pq.push(1);
    pq.push(5);

    // 訪問最大元素
    std::cout << "Top element: " << pq.top() << std::endl;

    // 刪除最大元素
    pq.pop();

    // 遍歷優先隊列元素
    while (!pq.empty()) {
        std::cout << pq.top() << " ";
        pq.pop();
    }
    std::cout << std::endl;

    return 0;
}

7. 映射(std::map

映射是一個鍵值對容器,鍵是唯一的。

#include <iostream>
#include <map>

int main() {
    std::map<std::string, int> mp = {{"apple", 1}, {"banana", 2}, {"cherry", 3}};

    // 訪問元素
    std::cout << "Apple count: " << mp["apple"] << std::endl;

    // 插入元素
    mp["orange"] = 4;

    // 遍歷元素
    for (const auto& pair : mp) {
        std::cout << pair.first << ": " << pair.second << std::endl;
    }

    return 0;
}

8. 集合(std::set

集合是一個無序且不重復的元素容器。

#include <iostream>
#include <set>

int main() {
    std::set<int> st = {3, 1, 4, 1, 5, 9};

    // 插入元素
    st.insert(2);

    // 刪除元素
    st.erase(3);

    // 遍歷元素
    for (int i : st) {
        std::cout<< i << " ";
    }
    std::cout << std::endl;

    return 0;
}

這些示例展示了如何在Linux環境下使用C++ STL容器進行基本操作。根據具體需求選擇合適的容器,并結合STL提供的算法和迭代器,可以編寫出高效且簡潔的代碼。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女