栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++STL标准模板库

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++STL标准模板库

目录

STL"标准模板库"

迭代器

一.vector

*deque双向队列

*list双链表

map 集合结构

STL"标准模板库"

c++的核心
STL容器:
序列式容器
元素固定位置,元素位置取决于插入的时机和地点,与值无关,vector,list,deque
关系式容器
取决于元素值的大小,set,multiset,map,multim
特性
1.外部数据外部管理,内部数据内部管理
2.多次遍历元素次序相同
3.各项操作并非绝对安全

迭代器

用来访问类中的所有元素,行为类似指针
访问特性:半开区间(左闭右开).
    
定义迭代器
    vector ::interator vit;
删除迭代器会失效,可获取删除位置的下一个位置

一.vector

封装了动态大小数组的顺序容器,vector是一个能够存放任意类型的动态数组,也称为向量
使用:#include
//类名<类型>对象名
//半倍扩容
size/2    比1小 加一
          比一大 加一半
          
  尾删只是无法访问
  v.at 会判断越界
  
  自己扩容
  1.resize 会赋值
  2.reserve  不会赋值

二维数组

 1.int row , col;2.vector> vv;3.vv.reserve(row)//q4.for循环确定列

*deque双向队列

deque是双向开口的连续线性空间(动态的将多个连续空间通过指针数组联系在一起)

头尾均可快速插入和删除

中间比较慢

插入

	deque dq;
	for (int i = 0; i < 6; ++i)
	{
		dq.push_back(i + 1);
		
	}
	for (int i = 0; i < 6; ++i)
	{
		dq.push_front(i*11 + 11);

	}

删除

dq.pop_front();
dq.pop_back();

迭代器定义 //出现内存重分配,迭代器会失效(顺序结构)

    deque::iterator dit;

erase()函数删除pos位置上的元素,或者删除start和end之间的所有元素。返回值是一个iterator,指向被删除元素的后一个元素。

迭代器遍历deque

int i = 0;
	for (dit = dq.begin(); dit != dq.end(); dit++, ++i)
	{
		printf("dq[%i]=%in", i + 1, *dit);
	}

*list双链表

1.不支持随机存取

2.任何位置删除插入很快

3.插入删除不会导致指向其他元素的指针引用迭代器失效

list  L;
	for (int i = 0; i < 6; ++i)
	{
		L.push_back(i + 1);

	}
	for (int i = 0; i < 6; ++i)
	{
		L.push_front(i * 11 + 11);
	}

定义迭代器

list::iterator  lit;    
lit = L.begin();    //list无法随机访问,只能迭代器++伪随机访问   
   for (int i = 0; i < 5; ++i)        
        lit++;

按数值删除

    L.remove(11);//没有就不删

list进阶应用

按条件删除

	L.remove_if(isBase);
//通过回调函数判断是否删除

去重函数 L.unique(); //两两判断删除

传入回调达成升序降序效果

map 集合结构

//二叉查找树 和c#的list类似

map的元素类型Key和T

1.Key 和value 必须满足可赋值和可复制的性质

2.key必须可比较

3.根据已知的key搜寻某个元素性能比已知value搜寻某个元素性能好

	map m;
  //插入
	m[1] = 3.14;
	m[2] = 2.68;
	m[0] = 3.33;
	//删除
	//根据key值删除
	m.erase(1);
	//迭代器
	map::iterator mit;
	//同样不支持随机访问
	for (mit = m.begin(); mit != m.end(); mit++)
		printf("key %i =%fn", mit->first, mit->second);

元素的插入

	//元素的插入 
	m.insert(std::pair(8, 123));//pair进行结构创建
	m.insert(map::value_type(9, 444));//调用成员函数
	m.insert(std::make_pair(5, 2.333));//捏造一个结构
	//默认升序
	map> mm;//greater按照string为key进行降序
	map> mmm;//less按照int为key进行升序

Multimap 允许可重复的元素

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/883888.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号