标准模板库 (STL)

vector: 动态数组,支持快速随机访问。内存连续,可以通过索引访问元素,元素可以动态扩展。

//容器使用示例
#include<iostream>
#include<vector>

int main() {
	std::vector<int>a = { 1,2,3};
	a.push_back(4);//添加元素
    vec.insert(vec.begin(), 0);//插入元素,头插入0
	for (int i : a) {
		std::cout << i << " ";
	}
}
//0 1 2 3 4
#include<iostream>
#include<vector>

int main() {
	std::vector<int>a = { 0,2,3};
	//迭代器遍历
	for (auto i = a.begin(); i < a.end(); i++) {
		std::cout << *i << " ";//0 2 3 
	}
	//反向遍历
	for (auto i = a.rbegin(); i != a.rend(); ++i) {
			std::cout << *i << " ";//3 2 0
		}


}

#include <iostream>
#include <vector>
#include <algorithm>

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

    // sort: 对元素进行排序
    std::sort(vec.begin(), vec.end());
    for (int i : vec) {
        std::cout << i << " ";  // 输出: 1 2 5 5 6 9
    }
    std::cout << std::endl;

    // find: 查找元素
    auto it = std::find(vec.begin(), vec.end(), 5);
    if (it != vec.end()) {
        std::cout << "五的位置是: " << std::distance(vec.begin(), it) << std::endl;//五的位置是: 2
    }

    // reverse: 反转元素顺序
    std::reverse(vec.begin(), vec.end());
    for (int i : vec) {
        std::cout << i << " ";  // 输出: 9 6 5 5 2 1
    }
    std::cout << std::endl;

    return 0;
}

'

deque(双端队列容器)

deque(双端队列容器):和 vector 非常相似,区别在于使用该容器不仅尾部插入和删除元素高效,在头部插入或删除元素也同样高效,时间复杂度都是 O(1) 常数阶,但是在容器中某一位置处插入或删除元素,时间复杂度为 O(n) 线性阶;当需要向序列两端频繁的添加或删除元素时,应首选 deque 容器

#include <iostream>
#include <deque>

int main() {
    std::deque<int> dq = {10, 20, 30};

    // 在前后添加元素
    dq.push_front(5);
    dq.push_back(40);

    // 遍历 deque
    for (int i : dq) {
        std::cout << i << " ";  // 输出: 5 10 20 30 40
    }
    std::cout << std::endl;

    // 删除两端元素
    dq.pop_front();
    dq.pop_back();

    // 遍历 deque
    for (int i : dq) {
        std::cout << i << " ";  // 输出: 10 20 30
    }
    std::cout << std::endl;

    return 0;
}

map 是一种关联式容器,它存储键值对,并自动对键进行排序。它适用于需要快速查找和排序的场景。

#include<iostream>
#include<map>
int main() {
	std::map<std::string, int> Map;
	Map["a"] = 1;
	Map["b"] = 2;
	//遍历 map
	for (auto i : Map) {
		std::cout << i.first << ":" << i.second << std::endl;
	/*a:1
	b : 2*/

	}
	if (Map.find("a") != Map.end()) {
		std::cout << "a的位置:" << Map["a"]; //a的位置:1
	}

}

set 是存储唯一元素的有序集合,适用于去重和快速查找。 

#include <iostream>
#include <set>

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

    // 插入元素
    numSet.insert(3);  // 插入重复元素,set 自动去重
    numSet.insert(6);

    // 遍历 set
    for (int num : numSet) {
        std::cout << num << " ";  // 输出: 1 2 3 4 5 6
    }
    std::cout << std::endl;

    return 0;
}

stackqueue 是容器适配器,基于其他容器(如 deque)提供堆栈和队列的功能。 

#include <iostream>
#include <stack>

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

    // 入栈
    s.push(10);
    s.push(20);
    s.push(30);

    // 输出栈顶元素并出栈
    while (!s.empty()) {
        std::cout << s.top() << " ";  // 输出: 30 20 10
        s.pop();
    }
    std::cout << std::endl;

    return 0;
}

#include <iostream>
#include <queue>

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

    // 入队
    q.push(10);
    q.push(20);
    q.push(30);

    // 输出队头元素并出队
    while (!q.empty()) {
        std::cout << q.front() << " ";  // 输出: 10 20 30
        q.pop();
    }
    

    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值