vector

本文涉及的产品
可观测可视化 Grafana 版,10个用户账号 1个月
云原生网关 MSE Higress,422元/月
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 【6月更文挑战第17天】

1. 容器概述

1.1 vector

  • 动态数组vector基于动态数组实现,这意味着它的元素在内存中是连续存储的。
  • 随机访问:由于元素的连续性,vector支持快速的随机访问。

1.2 list

  • 双向链表list基于双向链表实现,每个元素通过指针连接到前一个和后一个元素。
  • 非连续存储:元素在内存中不是连续存储的,这使得元素的插入和删除操作更加灵活。

2. 性能比较

2.1 访问速度

  • vector提供了O(1)时间复杂度的随机访问能力,可以直接通过索引访问元素。
  • list的访问速度较慢,需要O(n)时间复杂度来访问特定位置的元素。

2.2 插入和删除

  • vector在中间插入或删除元素时,需要移动插入点后的所有元素,时间复杂度为O(n)。
  • list可以在O(1)时间内完成元素的插入和删除,只需调整相邻节点的指针。

2.3 内存使用

  • vector通常使用较少的额外内存,因为它是连续存储的。
  • list由于需要存储额外的指针,所以每个元素的内存开销更大。

3. 功能特性

3.1 容量管理

  • vector会自动管理其容量,当需要更多空间时会进行扩容操作。
  • list没有容量的概念,因为它不预先分配内存。

3.2 迭代器失效

  • vector中,插入或删除操作可能会使迭代器失效。
  • list的迭代器在插入和删除操作后仍然有效,除非被删除的元素的迭代器。

4. 适用场景

4.1 使用vector的场景

  • 当你需要快速随机访问元素时。
  • 当插入和删除操作不频繁,或者主要在容器的末端进行时。
  • 当内存使用是一个考虑因素时。

4.2 使用list的场景

  • 当你需要频繁地在容器中间插入或删除元素时。
  • 当你需要一个双向可迭代的容器时。
  • 当元素的大小较大,且不希望因插入操作而移动大量元素时。

5. 实例代码

5.1 使用vector

#include <vector>
#include <iostream>

int main() {
   
    std::vector<int> vec = {
   1, 2, 3, 4, 5};
    vec.push_back(6); // 在末尾添加元素
    for (int num : vec) {
   
        std::cout << num << " ";
    }
    return 0;
}

5.2 使用list

#include <list>
#include <iostream>

int main() {
   
    std::list<int> lst = {
   1, 2, 3, 4, 5};
    lst.insert(lst.begin(), 0); // 在开始处插入元素
    for (int num : lst) {
   
        std::cout << num << " ";
    }
    return 0;
}
目录
相关文章
|
8月前
|
存储 算法 测试技术
C++:Vector的使用
C++:Vector的使用
|
8月前
|
编译器 C++
【c++】vector
【c++】vector
57 0
|
3月前
|
算法 C++ 容器
C++之打造my vector篇(下)
C++之打造my vector篇(下)
43 0
|
3月前
|
存储 编译器 C++
C++之打造my vector篇(上)
C++之打造my vector篇(上)
41 0
|
3月前
|
算法 C++ 容器
【C++】—— vector使用
【C++】—— vector使用
|
5月前
|
存储 算法 C语言
【C++】vector的认识与使用
【C++】vector的认识与使用
|
6月前
|
存储 C语言 C++
【C++】vector的使用上
**C++ STL的vector简介与用法:** Vector是动态顺序数组,提供高效下标访问,支持动态增长。与数组类似但可自动调整大小。常用构造函数包括默认、填充、迭代器范围和拷贝构造。析构函数自动释放内存。赋值运算符执行深拷贝。迭代器接口包括`begin()`和`end()`(反向对应`rbegin()`和`rend()`),C++11增加了const版本以支持只读访问。示例代码展示了不同构造函数和迭代器的使用。
|
6月前
|
编译器 C++
【C++】vector的使用下
**C++ 中的 `std::vector` 概要:** - **元素获取:** 支持 `operator[]`(越界时不检
|
编译器 C++
c++ vector的使用
vector 的初始化
76 0
|
设计模式 编译器 C++
【C++】vector的使用(下)
【C++】vector的使用(下)