21xrx.com
2024-11-05 16:30:26 Tuesday
登录
文章检索 我的文章 写文章
C++中vector、list和set的用法详解
2023-07-09 20:45:21 深夜i     --     --
C++ vector list set 用法详解

在C++编程中,vector、list和set都是常用的容器类型。它们可以存储不同类型的数据,同时具有不同的特性和性能。本文将针对这三种容器类型进行详细解析。

1. vector

vector是一个动态数组,可以自动扩容。它的元素在内存空间中是连续分布的,因此支持随机访问和迭代器。vector的元素只能通过下标访问,而不能使用迭代器直接访问,因为vector的元素不是链式存储的。

定义vector的方法如下:


#include <vector>

std::vector<int> v; //定义一个空的int类型vector

v.push_back(1); //在vector末尾插入元素1

v.push_back(2); //在vector末尾插入元素2

v.insert(v.begin()+1,3); //在位置1插入元素3

v.erase(v.begin()+1); //删除位置1的元素

2. list

list是一个双向链表,支持插入、删除和移动操作,但是不支持随机访问和下标运算符。因此,访问元素只能使用迭代器。list的元素是不连续的,每个元素只存储它的值和前后元素的指针。

定义list的方法如下:


#include <list>

std::list<int> l; //定义一个空的int类型list

l.push_back(1); //在list末尾插入元素1

l.push_back(2); //在list末尾插入元素2

l.insert(++l.begin(),3); //在位置1插入元素3

l.erase(++l.begin()); //删除位置1的元素

3. set

set是一个关联容器,存储的元素是有序的,而且不允许相同的元素存在。set是基于红黑树实现的,因此访问元素和插入/删除操作的时间复杂度均为O(logn),其中n为元素个数。

定义set的方法如下:


#include <set>

std::set<int> s; //定义一个空的int类型set

s.insert(1); //插入元素1

s.insert(2); //插入元素2

s.erase(1); //删除元素1

s.find(2); //查找元素2,返回一个迭代器

总结

vector、list和set都是常用的容器类型,它们在存储和处理数据方面有不同的特性和性能。根据需求,可以灵活地选择使用某种类型的容器,在实现程序的同时提高效率和可读性。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复