首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【c++丨STL】vector的使用

vector相关接口查阅: vector - C++ Reference vector简要介绍 vector是STL中的一种容器,它用于表示可变大小的数组,底层使用动态顺序表实现。...由于vector强大的功能和灵活性,我们在c++编程中经常使用vector来表示内存连续的序列。...它的使用方法与下标引用操作符相同。这里需要注意:可移植程序不应该使用超出范围的参数n调用此函数,因为这会导致未定义的行为。...find 在vector的成员函数中,我们发现并没有用于查找的函数(find),那么如何进行查找呢?答案是使用STL实现的通用find。...总结 今天我们学习了STL另一个容器--vector的使用。不难发现,它的许多接口名称与string是相同的,这种实现方式也有助于我们学习、使用和理解STL各种各样的容器。

22510

【c++丨STL】list的使用

到了这个阶段,我们应该认识到:在STL中,尽管容器各异,但同名接口的功能往往是相似的。...list相关接口查阅: list - C++ Reference 一、list的默认成员函数 list显示实现的默认成员函数有三个:分别是构造函数、析构函数和赋值重载。...find 与vector相同,list并没有用于查找的函数(find),要使用STL实现的通用find完成查找。该find函数定义在算法库当中,用于容器元素的查找。...这里简单介绍一下谓词: 之前我们在c语言部分使用qsort函数时,需要显示写一个比较函数用于确定排序的规则,谓词的功能就相当于我们显示写的比较函数。...当然,该特定关系也是使用谓词表示。当我们没有显示设置特定关系,那么该特定关系就是两元素相等,也就是说我们没有传参时,函数的功能是删除所有相邻的重复元素(保留一个重复的元素,不会全部删除)。

10110
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【c++丨STL】mapmultimap的使用

    前言 之前我们学习了STL关联式容器——set/multiset的使用,本篇文章我们将介绍另一组关联式容器map(映射表)/multimap(多重映射表)。...map和multimap相关接口查阅: - C++ Reference map和multimap的使用方法基本相同,但相比multimap,map更加常用,所以接下来的内容将主要聚焦于...首先,对于该重载函数,我们应将键key作为下标来传参。 如果容器内已经有相同的key,那么该函数返回value的引用,达到根据键访问或修改值的效果。...我们将key作为参数传入,返回值是valus的引用。 当容器内不存在相同的key时,该函数会抛出异常。...lower_bound、 upper_bound 和 equal_range 这三个函数的使用方法请参照这篇文章: 【c++丨STL】set/multiset的使用-CSDN博客 它们的使用方法、

    10210

    【c++丨STL】setmultiset的使用

    今天,我们将进一步拓宽视野,深入学习STL中的容器——set及其变种multiset。...作为STL的重要组成部分,set以其独特的性质——元素自动排序且不重复,在解决许多实际问题时发挥着不可替代的作用。...鉴于set和multiset的接口功能几乎没有区别,且set更为常用,所以接下来的内容将主要聚焦于set常用接口的使用方法。...set和multiset相关接口查阅: - C++ Reference 三、set的默认成员函数 set显式实现的默认成员函数有三个: 构造函数(constructor...无论是使用普通迭代器还是const迭代器,都无法修改set元素的值。(set元素的值不支持修改) set迭代器的使用方法与其他容器没什么区别,这里就不再赘述。

    10210

    C++11——lambda表达式

    作用: 以往C++需要传入一个函数的时候,必须事先进行声明,视情况可以声明为一个普通函数然后传入函数指针,或者声明一个仿函数(functor,函数对象),然后传入一个对象。...比如C++的STL中很多算法函数模板需要传入谓词(predicate)来作为判断条件,如排序算法sort。谓词就是一个可调用的表达式,其返回结果是一个能用作条件的值。...标准库算法所使用的谓词分为两类:一元谓词(unary predicate,只接受单一参数)和二元谓词(binary predicate,接受两个参数)。...object)被使用,比如作为谓词传入标准库算法。...3.lambda的常见用法 (1)lambda函数和STL lambda函数的引入为STL的使用提供了极大的方便。

    1.4K21

    【c++丨STL】string类的使用

    string类的介绍--为什么学习string类 之前我们对STL已经有了一些初步的了解,本篇文章我们正式开始学习STL。...c++标准库当中,定义了一个类用于表示字符串及其操作,叫做string。string类最开始并不属于STL,但是它在c++标准库中的作用与STL紧密相连,于是成为了STL的一员。...由于string类之前是不属于STL的,只有一个接口length用于求字符串长度。但由于STL的其他容器都是通过size来求元素个数,为了保持一致性,string也实现了一个相同功能的接口size。...npos具有size_t类型元素的最大可能值。 当在string的成员函数中作为len(或sublen)参数的值时,该值表示“直到字符串结束”。 作为返回值,它通常用于表示没有匹配。...使用方法与其他内置类型的输入输出相同。 对于输入操作,函数会以空格、回车等字符作为分隔符,它们将无法读入字符串当中。如果想要读取这些字符,就需要使用getline函数。

    17810

    【C++】STL——setmultiset 和 mapmultimap的使用

    这四种容器的共同点是:使用平衡二叉搜索树(即红黑树)作为其底层结构,容器中的元素是一个有序的序列。...关于set的仔细介绍大家可以去看文档 不过是英文的,大家可以借助翻译工具查看 3.1 set的使用 由于我们之前已经学了好几个STL里面的容器,所以这里对于这些容器的使用,其实对我们应该是比较轻松的...那我们接下来就来熟悉一下它的使用: 看一下它的构造函数 那我们来构造一个空的set,然后插入一些值 首先使用set要包含对于的头文件#include 我们使用insert插入几个元素...5.2 pair 那在学习map的使用之前,我们来学一个STL里面的类/结构体模板——pair 我们来看一下SGI-STL中关于pair的定义: template <class T1, class...一个键只能对应一个值,一个值可以对应多个键 也可以直接通过find键去查找值 那我们也用map再写一下统计次数的程序: 跟之前的思路一样,我就直接上代码了 对map中[]的理解 然后呢

    22710

    【C++】简述STL——string类的使用

    文章目录 一、STL的简述 1.STL的框架 2.STL版本 二、编码铺垫 三、string类 四、常见构造 五、operator[] 六、访问及遍历 七、iterator迭代器 1.正向迭代器 2...template libaray-标准模板库):是C++标准库的重要组成部分**,不仅是一个可复用的组件库,而且一个包罗数据结构与算法的软件框架**。...1.STL的框架 2.STL版本 原始版本 Alexander Stepanov、Meng Lee 在惠普实验室完成的原始版本,本着开源精神,他们声明允许任何人任意 运用、拷贝、修改、传播、商业使用这些代码...我们后面学习STL要阅读部分源代码,主要参考的就是这个版本。...,另外,值得在这里强调对于一些接口的使用我们可以去查文档进行理解使用。

    45630

    C++ STL学习之【list的使用】

    ---- 前言 STL 中的 vector 存在头部及中部操作效率低的缺陷,需要另一种容器来弥补其短板,此时 list 就应运而生,list 是一个双向带头循环链表,是链表的终极形态,除了不支持下标的随机访问外...,其他方面效率都是极高的,本文将带大家认识、使用 list 容器 list 的结构示意图(双向带头循环链表) 出自 《STL源码剖析》 ---- ️正文 学习使用容器首先需要从 默认成员函数...反向迭代器 reveser_iterator 正向与反向的 const 版本 实际使用时,正向迭代器与 begin()、end() 匹配使用,反向迭代器与 rbegin()、rend() 匹配使用...,其他使用非连续空间容器也是如此,由此可以看出迭代器设计的巧妙之处(以统一的接口,规范所有容器的使用) 注意: list 也存在迭代器失效问题,在 erase 节点后,此处的迭代器将失效,需要及时更新迭代器...《list》 ---- 总结 以上就是本次关于 STL 中的 list 容器学习使用的全部内容了,list 相对于前两种容器来说比较特殊,值得细细研究,list 的核心内容在于其迭代器类的设计,将在下篇文章

    23120

    【C++初阶】STL-string的使用

    文章目录 一.string初识 1.STL简介 a.STL的组成 b.STL和string的关系 2.basic_string 二.构造函数 三.三种遍历方式 四.容量相关的函数 1.size() 2....网上有句话说:“不懂STL,不要说你会C++”。STL是C++中的优秀作品,有了它的陪伴,许多底层的数据结构 以及算法都不需要自己重新造轮子,站在前人的肩膀上,健步如飞的快速开发。...b.STL和string的关系 推荐一个学习C++的一个文档网站:C++文档说明,看文档也是一种工作必备能力哦 历史上,string出现的比STL出现的早,但是因为功能上string和STL中的容器很像...原因:string设计早于STL,STL有自己的一套,也就包含size() string有它的一套,也就是length(),作为STL的设计者把string加入到STL中的时候,为了向前兼容,就保留了原来的一套...const char* c_str() const; 一般在C和C++结合使用的时候能使用到,比如用C语言打开文件 void test9() { string file("test.cpp");

    34520

    使用STL vector 作为XNAMath快速灵活的SIMD数据容器

    简介 这篇文章是关于如何将传统的STL vector作为XNAMath类型容器使用....本文适用于想在代码中引入新鲜空气的x86 Windows开发者, 你将会看到如何把强大的XNAMath和灵活的STL vector结合到一起....灵活的内存管理不管对于游戏还是编辑器的常用代码都是一件好事. 像网格顶点这样的内存密集性操作, 如: 网格加载, 连接, 断开等, 使用STL vector这样的线性容器更加简单和方便....示例说明了怎样定义一个简短的类型标识 vec_type.vec_type 就是一个使用了新的AAllocator的 STL vector, 而vector 作为XMFLOAT4的容器....使用相同的函数调用可以直接更新STL容器中的XMFLOAT4类型 (从SIMD寄存器中). 结果 1st.

    78430

    C++ STL 学习之【string的使用】

    前言 STL 是 C++ 的重要组成部分,由六大部分构成:伪函数、空间配置器、算法、容器、迭代器 和 配接器,其中各种各样的 容器 可以很好的辅助我们写程序,比如今天要介绍的 string,有了它之后,...的形式,当识别到其他字符时,会匹配使用对应标准,比如当识别到汉字时,会使用 GBK 编码标准来进行输出(Windows) 后续随着万国码 Unicode 的诞生,提出了能适用更多语言的编码标准...、容量、长度等信息,我们也可以进行手动扩容等操作 ️获取数据 获取 string 对象中指向字符串的指针 _str C++兼容C,在某些场景下需要使用指向字符串的指针,因此 string 类中提供了这个接口...string 诞生于 STL 之前,当时的设计的获取大小函数为 length() 后来当 string 并入 STL 后,委员会为了统一化,就在 string 类中添加了一个 size() 函数,因为其他容器中获取大小的函数都是...首先是 STL 版本不同,其次string 在实际使用中,都用不了太大的空间,因此 VS 就直接索性给了一个默认大小为 15 的数组,后续有需要再进行扩容 频繁扩容会导致内存碎片问题,VS在这里的处理方法是比较合理的

    30120

    C++ STL学习之【vector的使用】

    下面来通过一个小程序先来简单看看 PJ 版 和 SGI 版的 默认扩容机制 vector v; size_t capacity = v.capacity(); cout << "Default...,就连官方文档上都有一个 警告标志 ---- 4、数据访问相关 连续空间数据访问时,可以通过 迭代器,也可以通过 下标,这里还是更推荐使用 下标,因为很方便;作为 “顺序表”,当然也支持访问首尾元素 4.1...等于 _start,就完成了清理,不需要进行缩容,这样做是低效的 关于 vector 更多、更详细的内容,欢迎移步 《C++ STL学习之【vector的模拟实现】》 ---- 6、相关试题 光知道怎么使用是不够的...,还需要将知识付诸于实践,切记纸上谈兵 下面是一些比较适合练习使用 vector 的试题,可以做做 vector 值得做的题目 ---- 总结 以上就是本次关于 STL 之 vector 的全部讲解了,...vector 相对来说函数比较少,也比较好理解,不过在实际使用中,会存在不少问题,需要对 vector 的不断使用以提高认知,如果对 vector 剩余函数感兴趣,可以阅读官方文档 vector 如果你觉得本文写的还不错的话

    38021

    C++11 Lambda 表达式

    1.2 作用 以往C++需要传入一个函数的时候,必须事先进行声明,视情况可以声明为一个普通函数然后传入函数指针,或者声明一个仿函数(functor,函数对象),然后传入一个对象。...比如C++的STL中很多算法函数模板需要传入谓词(predicate)来作为判断条件,如排序算法sort。谓词就是一个可调用的表达式,其返回结果是一个能用作条件的值。...标准库算法所使用的谓词分为两类:一元谓词(unary predicate,只接受单一参数)和二元谓词(binary predicate,接受两个参数)。...object)被使用,比如作为谓词传入标准库算法。...5.Lambda 的常见用法 (1)Lambda 函数和 STL Lambda 函数的引入为 STL 的使用提供了极大的方便。

    2K41

    C++11 Lambda表达式

    1.2作用 以往C++需要传入一个函数的时候,必须事先进行声明,视情况可以声明为一个普通函数然后传入函数指针,或者声明一个仿函数(functor,函数对象),然后传入一个对象。...比如C++的STL中很多算法函数模板需要传入谓词(predicate)来作为判断条件,如排序算法sort。谓词就是一个可调用的表达式,其返回结果是一个能用作条件的值。...标准库算法所使用的谓词分为两类:一元谓词(unary predicate,只接受单一参数)和二元谓词(binary predicate,接受两个参数)。...object)被使用,比如作为谓词传入标准库算法。...5.Lambda的常见用法 (1)Lambda函数和STL Lambda函数的引入为STL的使用提供了极大的方便。

    1.3K31

    C++系列笔记(六)

    【导读】《21天学通C++》这本书通过大量精小短悍的程序详细而全面的阐述了C++的基本概念和技术,包括管理输入/输出、循环和数组、面向对象编程、模板、使用标准模板库以及创建C++应用程序等...这些内容被组织成结构合理、联系紧密的章节,每章都可在1小时内阅读完毕,都提供了示例程序清单,并辅以示例输出和代码分析,以阐述该章介绍的主题。本文是系列笔记的第五篇,欢迎各位阅读指正!...运算符类型和运算符重载   C++运算符从语法层面来看,除使用关键字operator外,运算符与函数几乎没有差别。...函数运算符用于标准模板库(STL)中,通常是 STL算法中。其用途包括决策。根据使用的操作数数量,这样的函数对象通常称为单目谓词或双目谓词。...; return 0; }   这个运算符也称为operator()函数,对象CDisplay也称为函数对象或functor。

    28310

    【C++】STL简介 及 string的使用详解

    STL简介 1.1 什么是STL STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架...1.2 STL的版本 原始版本 Alexander Stepanov、Meng Lee 在惠普实验室完成的原始版本,本着开源精神,他们声明允许任何人任意运用、拷贝、修改、传播、商业使用这些代码,无需付费...唯一的条件就是也需要向原始版本一样做开源使用。 HP 版本——所有STL实现版本的始祖。 P. J. 版本 由P. J....,那这里呢其实跟一些历史原因有关,string呢其实出现的比STL早,string其实严格来说是不属于STL的,它是C++标准库产生的,在STL出现之前就已经在标准库出现了。...,那这里肯定是string的swap是更高效的一点的,因为string::swap作为string的成员函数,那它里面想交换这两个对象,就可以怎么办,是不是可以直接改变指针的指向(交换它们两个的成员变量

    13710

    后现代的系统编程语言-C++ | TW洞见

    资源管理 RAII(Resource Aquiration is Initialization,资源获取即初始化)作为C++的特色之一,被广泛地应用到C++的程序中。...Lambda Functor作为C++ STL的一个重要组件,也是C++中被使用很多的一个功能。...但是,由于C++对于匿名类和内部类支持并不够好,使用Functor必须提前进行设计。一方面不方便使用,另一方面,定义和使用分离,对代码的组织和理解也造成了一定的困难。...首先,lambda作为Functor的替代品,解决了不能即时定义并使用的问题。配合STL中的容器和算法,lambda也能将C++的函数式风格发挥到极致。...但一方面由于使用模版减慢编译速度,另一方面,在使用模版的时候,非常难以调试和排错,这让很多人望而却步,甚至对基于模版的STL组件也有一种畏惧感。 C++11中对元编程支持做了加强。

    1.2K60

    C++ STL map集合的使用「建议收藏」

    大家好,又见面了,我是你们的朋友全栈君。 有时需要根据索引找到对应的元素,像键值对一样的查找,并对这些元素进行操作。可以同故宫调用STL里面的map来解决这个问题。...映射到int的映射表 2)ds[A] = B 把这个“数组”中下标为A的位置的值变成B,这里下标可以是任意类型,不一定限定为大于0的整数 3)ds[A] 访问这个“数组”中下标为A的元素,可以直接输出如...A的元素 注意:在使用ds[A]访问“数组”下标为A的元素时,如果对应元素不存在,则会自动创建下标为A、值为默认值(例如,所有数值类型的默认值是0,string字符串是空字符串)的元素。...如果已经有同名的学生则更新这名学生的成绩为 SCORE。如果成功插入或者修改则输出OK。 查询,格式2 NAME:在系统中查询姓名为 NAME 的学生的成绩。...else{ cout<<"Not found"<<endl; } }else{ cout<<ds.size()<<endl; } } return 0; } 发布者:全栈程序员栈长

    36620
    领券