首页 > 其他分享 >0.STL,Vector,Set基础

0.STL,Vector,Set基础

时间:2025-01-05 11:30:53浏览次数:3  
标签:容器 Set 迭代 STL vi 元素 st Vector

STL、Vector、Set基础

1.STL

c++提供了一套标准模板库——STL

包含三大组件:

  • 容器:

存储数据的数据结构,类模板的实例,常见的有vector,set,string,map

  • 算法:

用于操作容器内数据的函数模板,可以应用于任何兼容的容器,常见的有sort,find,copy

  • 迭代器:

用于遍历容器元素的,像指针的对象,提供容器内数据访问能力,是算法与容器之间的桥梁,便于算法与不同容器的无缝衔接

2.Vector

代表一个可以动态调整大小的数组,长度根据需要自动增长或缩小

#include <vector>
Vector的定义

typename可以为任何基本数据类型,int,double,char,struct结构体等,甚至是STL容器如vector,set,queue等

name为定义的容器名字

注意:当typename为另一个STL容器时,例如vectoer <vector <int> >,在>>之间要加上空格,以免被老编译器识别成移位操作符

vector <typename> name;
Vector内元素的访问

1.通过下标访问:

index0开始,直到vectorname.size() - 1

vectorname [index];

2.通过迭代器访问:

迭代器的定义:

itname为迭代器

vector <typename>::iterator itname = vi.begin(); //将迭代器指向vi的第一个元素

实例:

#include <stdio.h>
#include <vector>
​
​
using namespace std;
​
int main()
{
    vector <int> vi;
    for (int i = 1; i<=5;i++)
    {
    vi.push_back(i);
    }
    //vi.begin()取得vi的首元素,把it指向这个首元素
    vector <int>::iterator it = vi.begin();
    for (int i = 0;i < 5;i++)
    {
    printf("%d", *(it + i));
    }
    return 0;
}
Vector常用函数
vi.push_back(element);//向vi的末尾添加一个新元素
vi.pop_back();//删除vi中最后一个元素
vi.size();//返回vi中元素的个数
vi.clear();//删除vi中所有的元素,让其变为空
vi.inser(it,element);//在it迭代器指定的位置插入一个新元素
vi.erase(it);//删除it迭代器指定位置的元素
3.Set

Set是STL中的一种有序容器,确保其内部元素唯一性(自动去除重复元素),顺序性(默认升序)

使用前需要包含头文件

#include <set>
Set的定义:

typename可以是任何基本数据类型,也可以是自定义类型

set <typename> name;
Set内元素的访问:

不支持下标访问,只支持迭代器访问元素

迭代器的定义:

itname为迭代器

st.end()是一个特殊的迭代器,它表示集合中最后一个元素之后的位置。这是一种用于标记迭代结束的方式,类似于在遍历数组或其他容器时,当迭代器到达容器末尾后的状态

set <typename>::iterator itname;

实例:

#include <iostream>
#include <set>

using namespace std;

int main()
{
    set<int> st;
    st.insert(3);
    st.insert(5);
    st.insert(2);
    st.insert(3);

    //不支持it < st.end()的写法,st.end()指的是末尾的下一个元素
    for (set<int>::iterator it = st.begin(); it!= st.end(); it++)
    {
        cout << *it << " ";//输出2 3 5
    }
    cout << endl;

    return 0;
}
Set常用函数
st.insert(element);//将一个新元素插入st
st.find(element);//在st中查找一个元素,找到返回指向该元素的迭代器,找不到返回st.end()
st.erase(element);//删除st中指定的元素
st.size();//返回st中元素的个数
st.clear();//删除st中所有的元素

标签:容器,Set,迭代,STL,vi,元素,st,Vector
From: https://blog.csdn.net/m0_60046831/article/details/144941430

相关文章

  • 在vue3中setup是如何获得组件实例的?
    在Vue3中,setup函数是在组件初始化阶段调用的,它提供了一个响应式的环境来设置组件的初始状态和逻辑。然而,setup函数本身并不直接提供组件实例。在setup函数内部,你无法直接访问到完整的组件实例,因为在这个阶段,组件实例还没有完全创建。不过,Vue3提供了一个getCurrentInsta......
  • 在TypeScript中的getter/setter是什么?有什么作用?
    在TypeScript(以及JavaScript的ES6+版本)中,getter和setter是特殊的方法,允许你以读取(get)或写入(set)属性的方式来操作类的内部状态。这提供了一种更灵活和可控的方式来处理类的属性。Getter是一个方法,但在调用时,它看起来就像一个普通的属性访问。当你读取这个“属性”时,实际上是调用......
  • STLG_01_09_程序设计C语言 - 指针
        C语言中的指针是一个非常重要的概念,它允许程序直接访问和操作内存地址。理解指针对于掌握C语言编程至关重要。1.指针的基本概念指针:指针是一个变量,它存储的是另一个变量的内存地址。指针变量:指针变量专门用来存储内存地址。2.指针的声明与初始化2.1指针的声......
  • RustLoader
    学习rust,练习写一个loader,不足之处还请指教编写隐藏黑框在注释掉所有打印语句后编译运行还是会弹黑框,解决方法是头部添加一行(指定Rust编译器生成的可执行文件为Windows子系统应用程序,而不是控制台应用程序):#![windows_subsystem="windows"]‍反沙箱流速检测......
  • TS2792: Cannot find module vue-demi. Did you mean to set the moduleResolution op
    TS2792错误提示Cannotfindmodule'vue-demi'.DidyoumeantosetthemoduleResolutionoptionto'node',ortoaddaliasestothepathsoption?表明TypeScript编译器无法找到vue-demi模块。这个问题通常出现在项目配置或依赖关系不正确的情况下。下面是一些可能的......
  • 标准库简介 - STL容器、算法简介
    引言C++标准模板库(StandardTemplateLibrary,简称STL)是C++标准库的一部分,提供了丰富的数据结构和算法。STL的设计目标是通用性和高效性,它通过模板机制实现了高度的灵活性和复用性。本文将详细介绍STL中的容器和算法,并通过实例帮助读者理解其使用方法。1.STL容器简介......
  • 请说说event.clientX、event.clientY、event.offsetX、event.offsetY之间的关系
    在前端开发中,event.clientX、event.clientY、event.offsetX和event.offsetY是与鼠标事件相关的属性,它们提供了关于鼠标在触发事件时的位置信息。以下是这些属性之间的关系和解释:event.clientX和event.clientY:这两个属性提供了鼠标指针相对于浏览器窗口可视区域的坐标。......
  • 请解释下vue3中setup的作用是什么?
    在Vue3中,setup是一个新的组件选项,它是VueCompositionAPI的一部分。setup函数为Vue组件提供了一种更灵活、更可复用的方式来组织和共享代码逻辑。以下是setup的主要作用和特点:声明响应式状态:在setup函数中,你可以使用ref和reactive来创建响应式状态。这些状......
  • Java 集合 Collection、List、Set
    一.Collection单列集合    1. Collection代表单列集合,每个元素(数据)只包含一个值    2.Collection集合特点        ①List系列集合:添加的元素是有序、可重复、有索引。            ArrayList、LinekdList:有......
  • JavaMock批量生成GET SET方法单测覆盖率
    @RunWith(MockitoJUnitRunner.class)@Slf4jpublicclassPersonTest{@TestpublicvoidtestPerson(){MockGetSetMethod(Person.class);}/***@paramtClass需要生成覆盖率的实体类*@param<T>泛型*/public<T>......