----------STL
寂寂寂寂寂蝶丶
这个作者很懒,什么都没留下…
展开
-
C++STL的容器的底层实现详解
转载自:https://blog.csdn.net/qq_43313035/article/details/89600276文章目录顺序容器 vector(向量容器) deque(双端队列) list 关联容器 set(集合) multiset map(key,value) multimap 顺序容器vector(向量容器)特点 内存可2倍增长的动态数组 数据结构:线性连续空间 维护三个迭代器:start、finish、end_of_st.转载 2020-11-23 19:26:01 · 215 阅读 · 0 评论 -
STL容器在遍历时迭代器失效问题
转载自:https://blog.csdn.net/hechao3225/article/details/55101344其他文章:https://www.cnblogs.com/qiaoconglovelife/p/5370396.htmlSTL容器根据迭代器的失效问题,其实可以分为两类容器:(1)数组型容器的插入删除操作:vector、string、deque(均为顺序存储) 由于这类容器的插入或删除都会使所有迭代器失效,因此每次插入删除后都需要重新定位(2)结点型数据容器...转载 2020-11-23 18:41:22 · 268 阅读 · 0 评论 -
STL中插入元素insert和emplace,效率
转载自:http://c.biancheng.net/view/6834.htmlinsert()insert() 函数的功能是在 vector 容器的指定位置插入一个或多个元素。该函数的语法格式有多种,如表 1 所示。表 1 insert() 成员函数语法格式 语法格式 用法说明 iterator insert(pos,elem) 在迭代器 pos 指定的位置之前插入一个新元素elem,并返回表示新插入元素位置的迭代器。 iterator insert(pos,n,ele转载 2020-11-23 11:38:02 · 1692 阅读 · 0 评论 -
顺序容器的相关操作
顺序容器迭代器(forward_list迭代器部分不支持) iterator //容器的正序迭代器类型reverse_iterator //容器的逆序迭代器类型const_iterator //可以读取元素,但不能修改元素的迭代器类型const_reverse_iterat...原创 2019-03-23 18:32:46 · 185 阅读 · 0 评论 -
vector的简单使用
vector的简单使用#include "stdafx.h"#include <iostream>using namespace std;#include <vector>//打印数组内容void func(vector<int> &vi)//传vector的引用{ //int size = vi.size(); //得到vec...原创 2017-12-02 09:57:35 · 322 阅读 · 0 评论 -
vector管理容量的成员函数、vector内存释放的方法
为了支持快速随机访问,vector将元素连续存储----每个元素紧挨着前一个元素存储。对于它的内存分配策略,标准库实现者采用了可以减少容器空间重新分配次数的策略,当不得不获取新的内存空间时,vector和string的实现通常会比分配新的空间需求更大的内存空间,容器预留这些空间作为备用,可用来保存更多的新元素,这样就不需要每次添加新元素都重新分配容器的内存空间了。这种分配策略比每次添加新元素时都重...原创 2019-03-22 20:49:59 · 601 阅读 · 0 评论 -
二分查找优化vector查找
二分查找属于顺序表查找范围,二分查找也称为折半查找。二分查找(有序)的时间复杂度为O(LogN)。二分查找概念:在有序表中,取中间记录作为比较对象,若给定值与中间记录的关键字相等,则查找成功;若给定值小于中间记录的关键字,则在中间记录的左半区继续查找;若给定值大于中间记录的关键字,则在中间记录的右半区继续查找。不断重复上述过程,直到找到为止。使用二分查找两个前提条件:1,待查找的列表必...原创 2019-09-23 14:43:14 · 863 阅读 · 0 评论 -
关联容器的相关操作
关联容器和顺序容器有着根本的不同:关联容器中的元素是按关键字来保存和访问的,顺序容器中的元素是按它们在容器中的位置来顺序保存和访问的,关联容器支持高效的关键字查找和访问,俩个主要的关联容器类型是map和set,map中的元素是一些关键字--值(key--value)对,关键字起到索引的作用,值则表示与索引相关联的数据,set中每个元素只包含一个关键字,set底层是基于map实现的,s...原创 2019-04-02 20:27:57 · 228 阅读 · 0 评论 -
STL中string的额外操作
构造string的其他方法string s1;string s2(s1);string s2=s1;string s3("value");string s3="value";string s4(n,'c'); //把s4初始化为由连续n个字符c组成的串出了以上构造函数和顺序容器相同的构造函数外,string类型还支持另外三个构造函数string s(cp,n); //s...原创 2019-03-26 10:53:41 · 345 阅读 · 0 评论 -
sort排序函数详解
参考自:https://www.cnblogs.com/AlvinZH/p/6784862.html?utm_source=itdadao&utm_medium=referral阅读目录1.sort 2.sort简介 3.sort扩展1.sort使用:#include <algorithm> using namespace std;作用:排...转载 2019-03-29 11:26:21 · 744 阅读 · 0 评论 -
容器适配器(stack、queue、priority_queue)
除了顺序容器外,标准库还定义了三个顺序容器适配器:stack、queue、priority_queue,适配器是标准库中的一个通用概念,容器、迭代器和函数都有适配器,一个容器适配器接受一种已有的容器类型,使其行为看起来像一种不同的类型。所有容器适配器都支持的操作和类型:size_type //一种类型,足以保存当前类型的最大对象的大小value_type //元素类型con...原创 2019-03-26 20:25:09 · 398 阅读 · 0 评论 -
泛型算法
标准库并未给每个容器添加大量功能,而是提供了一组算法,它们实现了一些经典算法的公共接口,如排序和搜索。这些算法中大多独立于任何特定容器,它们可以用于不同类型的元素和多种容器类型,所以称之为泛型算法,大多数算法定义在#include <algorithm>中,标准库还在头文件#include <numeric>中定义了一组数值泛型算法,一般情况下这些算法并不...原创 2019-03-29 17:09:04 · 248 阅读 · 0 评论 -
编写一个函数,接受三个string参数是s、oldVal 和newVal。使用insert和erase函数将s中所有oldVal替换为newVal。
void fun(string &s, string oldVal, string newVal){ string::size_type pos = 0; //int pos = 0; //避免使用int等带符号类型来储存size_type while (pos<s.length()) { pos = s.find(oldVal, pos);//从零号位置开始查找...原创 2018-04-02 10:04:48 · 801 阅读 · 0 评论 -
从cin读入一组词并把它们存入一个vector对象,然后设法把所有词都改写为大写,输出改变后的结果
#include "stdafx.h"#include <iostream>#include <vector>#include <string>using namespace std;int _tmain(int argc, _TCHAR* argv[]){ string s1; cout << "输入一组词:"; vecto...原创 2018-03-23 21:17:52 · 859 阅读 · 0 评论 -
练习11.12:编写程序,读入string和int的序列,将每个string和int存入一个pair中,pair保存在一个vector中。
#include <stdio.h>#include <iostream>using namespace std;#include <string>#include <vector>int main(int argc,char *argv[]){ string word; int i; vector<pair<st...原创 2018-04-03 13:43:05 · 616 阅读 · 2 评论 -
编写程序,首先查找string"ab2c3d7R4E6"中每个数字字符,然后查找其中每个字母字符。
#include <stdio.h>#include <iostream>#include <string>using namespace std;int main(int argc,char *argv[]){ string s = "ab2c3d7r4e6"; string s1 = "1234567"; string s2 = "abc...原创 2018-04-02 11:19:47 · 301 阅读 · 0 评论 -
练习11.4:扩展你的程序,忽略大小写和标点。例如,"example."、"example,"和"Example"应该递增相同的计数器。
练习11.4:扩展你的程序,忽略大小写和标点。例如,"example."、"example,"和"Example"应该递增相同的计数器。#include <stdio.h>#include <iostream>using namespace std;#include <string>#include <map>int mai原创 2018-04-03 10:01:03 · 618 阅读 · 0 评论