STL常用数据结构

STL常用数据结构

STL常用数据结构

vector:动态数组

#include <iostream>
#include <vector>
using namespace std;
int main()
{
    vector<int> vec;
    vec.push_back(10); // 添加元素到末尾
    vec.push_back(9);  // 添加元素到末尾
    int el = vec[0]; // 随机访问元素
    vec.pop_back(); // 移除末尾元素
}

list:双向链表

#include <iostream>
#include <list>
using namespace std;
int main()
{
    std::list<int> myList;
    myList.push_back(10);  // 在末尾插入元素
    myList.push_front(20); // 在头部插入元素
    myList.pop_back();     // 移除末尾元素
    myList.pop_front();    // 移除头部元素
}

deque:双端队列

#include <iostream>
#include <deque>

using namespace std;
int main()
{
    deque<int> myDeque;
    myDeque.push_back(10);  // 在末尾插入元素
    myDeque.push_front(20); // 在头部插入元素
    myDeque.pop_back();     // 移除末尾元素
    myDeque.pop_front();    // 移除头部元素
}

stack:栈

#include <iostream>
#include <stack>

using namespace std;
int main()
{
    stack<int> myStack;
    myStack.push(10);               // 元素入栈
    int topElement = myStack.top(); // 访问栈顶元素
    myStack.pop();                  // 元素出栈
    bool isEmpty = myStack.empty(); // 检查栈是否为空
}

queue:队列

#include <iostream>
#include <queue>

using namespace std;
int main()
{
    queue<int> myQueue;
    myQueue.push(10);                   // 元素入队
    int frontElement = myQueue.front(); // 访问队首元素
    myQueue.pop();                      // 元素出队
    bool isEmpty = myQueue.empty();     // 检查队列是否为空
}

priority_queue:优先队列

#include <iostream>
#include <queue>

using namespace std;
int main()
{
    priority_queue<int> myPriorityQueue;
    myPriorityQueue.push(10);               // 元素入队
    int topElement = myPriorityQueue.top(); // 访问队列中的最高优先级元素
    myPriorityQueue.pop();                  // 元素出队
    bool isEmpty = myPriorityQueue.empty(); // 检查队列是否为空
    // 其他
    vector<int> vec = {1,2,3,4,5,6};
    // 小堆则第三个参数设为greater<int>()
    make_heap(vec.begin(), vec.end());
    /* 将堆的最大(或最小)元素移动到容器的最后一个位置,并保持堆的性质不变。换句话说,它将堆中的根节点(通常是最大值或最小值)移动到最后一个节点,并将堆的大小减小一个元素。*/
    pop_heap(vec.begin(), vec.end());
    vec.pop_back();
    vec.push_back(0);
    /*将容器中的元素进行重新排列,以将新添加的元素(通常是最后一个元素)正确地放入堆中,并保持堆的性质不变。*/
    push_heap(vec.begin(), vec.end());
}

map:哈希表

#include <iostream>
#include <unordered_map>
#include <string>

int main() {
    std::unordered_map<std::string, int> myMap;

    // 插入键值对
    myMap["apple"] = 5;
    myMap["banana"] = 3;
    myMap["orange"] = 8;

    // 访问元素
    std::cout << "apple: " << myMap["apple"] << std::endl;
    std::cout << "banana: " << myMap["banana"] << std::endl;
    std::cout << "orange: " << myMap["orange"] << std::endl;

    // 遍历哈希表
    for (const auto& pair : myMap) {
        std::cout << pair.first << ": " << pair.second << std::endl;
    }

    // 检查元素是否存在
    if (myMap.find("apple") != myMap.end()) {
        std::cout << "apple exists" << std::endl;
    }

    // 删除元素
    myMap.erase("banana");

    // 检查元素是否存在
    if (myMap.find("banana") == myMap.end()) {
        std::cout << "banana does not exist" << std::endl;
    }

    return 0;
}
------本页内容已结束,喜欢请分享------

文章作者
能不能吃完饭再说
隐私政策
PrivacyPolicy
用户协议
UseGenerator
许可协议
NC-SA 4.0


© 版权声明
THE END
喜欢就支持一下吧
点赞27赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片