C++11 STL中的Vector使用细节

容器

在这里插入图片描述

支持泛型

    vector<int> vi;
    vector<double> vd;
    vector<string> vs;
    list<int> li;
    list<double> ld;
    list<string> ls;
    map<int,string> mis;
    map<string,int> msi;
STL容器优劣对比:
---------------------------------------------------------------------------------
| 容器类型          | 优点                                           | 缺点                                           | 适用场景                               |
|-------------------|------------------------------------------------|------------------------------------------------|----------------------------------------|
| `std::vector`     | 1. 随机访问速度快,O(1)                         | 1. 在中间插入/删除元素慢,O(n)                 | 1. 需要频繁随机访问元素的场景          |
|                   | 2. 在末尾插入/删除元素快,O(1)(平均情况)      | 2. 内存分配可能不连续,导致缓存不友好          | 2. 元素数量变化不大的场景              |
| `std::list`       | 1. 在任意位置插入/删除元素快,O(1)              | 1. 随机访问慢,O(n)                            | 1. 需要频繁在中间插入/删除元素的场景   |
|                   | 2. 内存分配连续,缓存友好                       | 2. 存储开销大,每个元素需要额外存储指针        |                                        |
| `std::deque`      | 1. 随机访问速度快,O(1)                         | 1. 在中间插入/删除元素慢,O(n)                 | 1. 需要频繁在两端插入/删除元素的场景   |
|                   | 2. 在两端插入/删除元素快,O(1)                  | 2. 内存分配可能不连续,导致缓存不友好          |                                        |
| `std::set`        | 1. 元素唯一,自动排序                           | 1. 插入/删除/查找元素慢,O(log n)              | 1. 需要元素唯一且有序的场景            |
|                   | 2. 红黑树实现,平衡性好                        | 2. 存储开销大,每个元素需要额外存储指针        |                                        |
| `std::map`        | 1. 键值对存储,键唯一,自动排序                 | 1. 插入/删除/查找元素慢,O(log n)              | 1. 需要键值对存储且键有序的场景        |
|                   | 2. 红黑树实现,平衡性好                        | 2. 存储开销大,每个元素需要额外存储指针        |                                        |
| `std::unordered_set` | 1. 元素唯一,无序                              | 1. 插入/删除/查找元素慢,O(1)(平均情况)      | 1. 需要元素唯一且无序的场景            |
|                   | 2. 哈希表实现,插入/删除/查找快                | 2. 哈希冲突可能导致性能下降                    |                                        |
| `std::unordered_map` | 1. 键值对存储,键唯一,无序                    | 1. 插入/删除/查找元素慢,O(1)(平均情况)      | 1. 需要键值对存储且键无序的场景        |
|                   | 2. 哈希表实现,插入/删除/查找快                | 2. 哈希冲突可能导致性能下降                    |                                        |
---------------------------------------------------------------------------------

Vector

std::vector是一个非常常用的容器,用于存储一组有序的元素。它类似于动态数组,能够自动调整大小,并且提供了许多方便的成员函数来操作和管理这些元素。

头文件:

#include

初始化:

std::vector<int> vec1; // 空vector
std::vector<int> vec2(5); // 包含5个默认初始化的元素
std::vector<int> vec3(5, 10); // 包含5个值为10的元素
std::vector<int> vec4 = {1, 2, 3, 4, 5}; // 使用初始化列表

添加元素:

vec1.push_back(10);
vec1.push_back(20);

访问元素:

可以使用下标运算符[]或at函数来访问元素:

int firstElement = vec1[0]; // 访问第一个元素
int secondElement = vec1.at(1); // 访问第二个元素
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

可能只会写BUG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值