首页 > 其他分享 >(STL)容器

(STL)容器

时间:2024-10-20 19:17:32浏览次数:3  
标签:容器 删除 insert STL 元素 插入 vector

1.容器

常用数据结构有数组(array),链表(list),tree(树),栈(stack),队列(queue),集合(set),映射表(map),

根据他们排列特性的不同,容器又分为序列式容器和关联式容器,

序列式容器:

序列容器是按照线性顺序存储元素的容器,常用的有vector,deque,list等

在调用vector,deque,list时别忘记包含它们的头文件

vector:

定义:vector<typename> name; 这相当于是一个一维数组,这里typename可以是任意的数据类型。vector<typename> Arrayname[size];    这是一个二维数组,Arrayname[ ]中的每一个元素都是一个vector,eg:vector<int>Array[100].

初始化:

vextor<int> v{1,2,3};//直接花括号赋值

vector常用函数:

push_back():在vector容器v后添加一个元素x
	vector<int> v;
	for(int i = 1; i <= 3; i++){
		v.push_back(i);
	}
pop_back():删除尾元素
size():用于获取个数。
clear():用于清空容器中所有元素。
insert():insert(位置(x),插入元素(i)),在位置插入i元素。

(既然insert是插入函数,那么是否可以将一个容器的首元素插入到另一个容器尾元素的后面,使两个容器合并为一个容器)

	vector<int> v, v1, v2;
	v.insert(v.end(), v1.begin(), v1.end());  //v1插入到了v后
	v.insert(v.end(), v2.begin(), v2.end());//当v1插入到了v后,变成了一个整体的v,又在v后插入v2
 
  
erase():删除单个元素或删除一个区间内所有元素。
                    删除单个元素:erase(a)删除a处的元素。
                    v.erase(v.begin() + 2)//意思为删除3处的元素.
                    删除一个区间内元素:erase(first,last)。
                    删除容器内元素:erase(v.first,v.end)。

deque:

deque是双端数组,可以对两端进行插入和删除操作,这就是它与vector的不同之处,vector是单向开口。由于它是双向的,随时可以添加一段新的空间,所以deque没有容量的概念。

deque<int> d1;
	for (int i = 1; i < 6; i++)
	{
		d1.push_back(i);
	}


从代码中可以发现赋值操作与vector相同。

deque.empty(); //判断容器是否为空
deque.size(); //返回容器中元素的个数
push_back(elem); //在容器尾部添加一个数据
push_front(elem); //在容器头部插入一个数据
pop_back(); //删除容器最后一个数据
pop_front(); //删除容器第一个数据
insert(pos,elem); //在pos位置插入一个elem元素的拷贝,返回新数据的位置。
insert(pos,n,elem); //在pos位置插入n个elem数据,无返回值。
insert(pos,beg,end); //在pos位置插入[beg,end)区间的数据,无返回值。
clear(); //清空容器的所有数据
erase(beg,end); //删除[beg,end)区间的数据,返回下一个数据的位置。
erase(pos); //删除pos位置的数据,返回下一个数据的位置。
front(); //返回容器中第一个数据元素
back(); //返回容器中最后一个数据元素

list

list是一个双向带头循环链表,允许在常数范围内的任意位置进行插入和删除,然而缺陷也和链表一样,不支持访问下标。

list大小:
	cout << l1.empty() << endl;
	cout << l3.size() << endl;
list的 头尾插删、insert、erase与deque一样
交换:
	l.swap();

————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/m0_74380601/article/details/140804955

标签:容器,删除,insert,STL,元素,插入,vector
From: https://blog.csdn.net/2301_81188158/article/details/143060623

相关文章

  • STL-set学习笔记
    set本质是平衡数,插入的数会自动排序并去重插入s.insert(1)删除<1>erase(id)删除指针id指向的数<2>erase(lid,rid)删除lid到rid所指向区间的数,且该区间为前闭后开区间<3>erase(val)删除值val遍历set的遍历涉及指针,其数据类型为set<int>::iterator,因为是指针......
  • 【信奥赛·C++基础语法】CSP-J C++ STL 标准模板库 - 算法
    序言标准模板库(STL)的算法部分提供了一系列强大的工具,用于对各种容器中的数据进行操作。这些算法可以大大提高编程效率,减少代码重复,使程序更加简洁、高效和可读。无论是处理简单的数据结构还是复杂的大规模数据,STL算法都能发挥重要作用。一、STL算法的分类排序算法快速......
  • 通过比较list与vector在简单模拟实现时的不同进一步理解STL的底层
     cplusplus.com/reference/list/list/?kw=list当我们大致阅读完list的cplusplus网站的文档时,我们会发现它提供的接口大致上与我们的vector相同。当然的,在常用接口的简单实现上它们也大体相同,但是它们的构造函数与迭代器的实现却大有不同。(食用本文时建议与文末的模拟实现代......
  • 【Docker系列】在 Docker 容器中打印和配置环境变量
    ......
  • 容器运维必备-Docker 常用命令
    前言:在Kubernetes的日常运维中,虽然我们主要依赖kubectl命令来管理容器和集群,但有时候,Docker的一些命令因其直观和便捷性,能够为我们提供极大的帮助。以下是一些Docker的常用命令,它们可以在Kubernetes环境中作为辅助工具使用,以提高我们的工作效率和操作的灵活性以下是Doc......
  • STL容器和算法
    1、C++的STL介绍(内存管理、allocator、函数、实现机理、多线程实现)STL一共提供六大组件,包括容器、算法、迭代器、仿函数、配接器和配置器,彼此可以组合套用。容器通过配置器取得数据存储空间,算法通过迭代器存取容器内容,仿函数可以协助算法完成不同的策略变化,配接器可以应用于容......
  • 天幕容器vector的底层实现,让这个容器的建造在你面前一览无余
    文章目录一、什么是vector?二、bit::vector的设计思路三、bit::vector的类定义四、构造函数与析构函数1.默认构造函数2.区间构造函数3.填充构造函数4.初始化列表构造函数5.拷贝构造函数6.析构函数五、push_back和内存管理六、插入操作(insert)七、删除操作(e......
  • 盛水最多的容器
    力扣第11题:盛水最多的容器题目描述给定一个整数数组height,其中height[i]表示第i条垂线的高度。找出两条线之间可以盛水的最大量,水的容量由较短的线段决定,且取决于这两条线段之间的宽度。示例示例1:输入:height=[1,8,6,2,5,4,8,3,7]输出:49示例2:输入:height=......
  • springboot使用自定义注解将对象注入容器中
    在SpringBoot中,你可以通过自定义注解和Spring的`BeanPostProcessor`来将对象注入到Spring容器中。以下是一个简单的实现步骤:1.**创建自定义注解**:importjava.lang.annotation.ElementType;importjava.lang.annotation.Retention;importjava.lang.annotation.Reten......
  • 【C++】C++ STL 树形结构容器全解析:map、set、multimap、multiset 的使用与区别
    C++语法相关知识点可以通过点击以下链接进行学习一起加油!命名空间缺省参数与函数重载C++相关特性类和对象-上篇类和对象-中篇类和对象-下篇日期类C/C++内存管理模板初阶String使用String模拟实现Vector使用及其模拟实现List使用及其模拟实现容器适配器Stack与QueuePriority......