STL容器1

在这里插入图片描述

1.1 vector

vector的优点:
1.动态大小调整‌:vector可以根据需要动态地调整大小,自动分配和释放内存,确保在添加或删除元素时实现高效的内存管理‌
2.连续存储‌:vector的元素在内存中是连续存储的,这使得通过指针算术进行快速访问成为可能‌
3.高效随机访问‌:由于元素的连续存储,vector支持高效的随机访问,可以通过索引直接访问任何元素‌
4.尾部插入和删除的高效性‌:在尾部进行插入和删除操作的时间复杂度为O(1),这使得在需要频繁在序列末尾添加或移除元素时非常高效‌
5.灵活的构造方式‌:vector提供了多种构造方式,包括默认构造、通过指定大小和值进行构造、通过迭代器区间进行构造等‌
6.迭代器支持‌:vector提供了迭代器,可以通过迭代器遍历vector中的元素,支持查找、排序等算法操作‌
7.内存管理‌:vector负责动态分配和释放内存,自动管理存储元素的内存空间,确保不浪费内存‌
8.使用场景广泛‌:适用于需要动态增长和缩小的数据集合、频繁在序列末尾添加或移除元素、需要高效随机访问元素的场景‌
—全网

建立:

vector <int> v;
操作语句
输入push_back
清空clear
访问大小size

e . g . 1 e.g.1 e.g.1

vector<int>v;
v.push_back(1);
cout << v[0] << endl;
cout << v.size() << endl;

o u t p u t : output: output:

1
1

e.g.2

vector<int>v;
int a;
cin >> a;
v.push_back(a);
cout << v[0] << endl;
cout << v.size() << endl;
v.clear();
cout << v.size() << endl;

i n p u t input input

88

o u t p u t output output

88
1
0

1.2 set

本质:功能受限的平衡树
头文件:

#include <set>

建立:

set <int> a;
操作语句
插入元素insert
删除erase
查找find
查看大小size
清空clear

e . g . 1 e.g.1 e.g.1

	set <int> a;
    a.insert(2);
    a.insert(4);
    cout << a.size() << endl;

o u t p u t output output

2

e . g . 2 e.g.2 e.g.2

	set <int> a;
    a.insert(2);
    a.insert(4);
    a.erase(2);
    cout << a.size() << endl;

o u t p u t output output

1

e . g . 3 e.g.3 e.g.3

	set <int> a;
    a.insert(2);
    a.insert(4);
    a.insert(6);
    cout << *a.begin() << endl;
    a.erase(2);
    cout << *a.begin() << endl;
    a.insert(3);
    cout << *a.begin() << endl;

o u t p u t output output

2
4
3

e . g . 4 e.g.4 e.g.4

	set <int> a;
    a.insert(2);
    a.insert(4);
    a.insert(6);
    cout << *--a.end() << endl;

o u t p u t output output

6

e . g . 5 e.g.5 e.g.5

	set <int> a;
    a.insert(2);
    a.insert(4);
    a.insert(6);
    cout << (a.find(4) != a.end()) << endl;
    a.erase(4);
    cout << (a.find(4) != a.end()) << endl;

o u t p u t output output

1
0

e . g . 5 e.g.5 e.g.5

	set <int> a;
    a.insert(2);
    a.insert(4);
    a.insert(6);
    cout << *a.lower_bound(4) << endl;
    a.erase(4);
    cout << *a.lower_bound(4) << endl;

o u t p u t output output

4
6

e . g . 6 e.g.6 e.g.6

	set <int> a;
    a.insert(2);
    a.insert(4);
    a.insert(6);
    for (set <int> :: iterator i = a.begin(); i != a.end(); i++)
    {
        cout << *i << endl;
    }

o u t p u t output output

2
4
6

1.3 map

本质:功能受限的平衡树,可以当成一个支持奇怪的下标的数组
头文件:

#include <map>

建立:

map <key, valur> mp;
操作语句
加入一个映射s[a] = b
访问s[a]
清空clear

e . g . 1 e.g.1 e.g.1

	map <int, int> mp;
    mp[-1] = 100;
    cout << mp[-1] << endl;

o u t p u t output output

100

e . g . 2 e.g.2 e.g.2

	map <int, int> mp;
    mp[-1] = 100;
    cout << mp[-1] << endl;
    mp[-1] += 500;
    cout << mp[-1] << endl;

o u t p u t output output

100
600

e . g . 3 e.g.3 e.g.3

	map <string, int> mp;
    mp["笑谈c语言"] = 5;
    cout << mp["笑谈c语言"] << endl;
    mp["笑谈c语言"] = 233;
    cout << mp["笑谈c语言"] << endl;

o u t p u t output output

5
233

e . g . 4 e.g.4 e.g.4

	map <int, int> mp;
    mp[1] = 0;
    mp[2] = 1;
    for (map <int, int> :: iterator i = mp.begin(); i != mp.end(); i++)
    {
        cout << (*i).second << endl;
    }

o u t p u t output output

1
0
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值