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

vector & map & stack

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

vector & map & stack

推荐几个学习c++的线上网站、
https://www.runoob.com/cplusplus/cpp-tutorial.html
https://www.w3cschool.cn/cpp/
https://www.php.cn/course/93.html
https://www.yiibai.com/cplusplus/
http://c.biancheng.net/cplus/

c++模板的概念,c++ STL标准模板库是一套功能强大的C++模板,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构,如向量、链表、队列、栈。
容器、算法、迭代器

1. vector向量

c++ vector使用方法 https://www.w3cschool.cn/cpp/cpp-i6da2pq0.html
vector类常用的函数 https://www.cnblogs.com/zsq1993/p/5929806.html

定义:

vector v;  vector v...

函数

  1. 基本操作
1 头文件: #include
2 创建vector对象: vector v;
	vector的元素,可以是int,double,string,结构体也可,但是结构体的各类函数需要重新定义。
	
3 尾部插入元素: v.push_back(a);
  指定位置插入元素:v.insert(v.begin()+i,a);新元素的下标是i,从0开始的。
  
4 使用下表访问元素: cout<::iterator it;
	for(it = v.begin();it!=v.end();it++){
	cout<<*it< 
  1. 算法
需要补充头文件#include
1 升序排序:sort(v.begin(),v.end());升序排序。
  降序排列:
  bool comp1(vector&a,vector&b){
  return a>b;
  }
  bool comp2(int a,int b){
    return a>b;
	}
  sort(v.begin(),v.end(),comp1);
  sort(v.begin(),v.end(),comp2);两者均可。
  函数参数是int a,int b,以及Comp函数名
	
2 元素逆序排列
reverse(v.begin(),v.end());

3 vector去除重复元素
	sort(v.begin(),v.end());
  v.erase(unique( v.begin(),v.end()),v.end());
  解释:unique( v.begin(),v.end())将数组中的连续重复元素移到数组最后,并
  	返回数组中的不重复的最后一个元素的迭代器。
  	v.erase(it1,it2) 删除迭代器之间的元素。保留后一个,删除前一个
  返回的是所有重复元素保留一个,的顺序数组。
  如果不先sort一下,则返回连续两数的值不同的数组,
  v=[1 2 2 3 2 3];
  v1=[1 2 3;]
  v2=[1 2 3 2 3];不先sort

.begin() 得到数组头的指针
.end() 得到数组的最后一个单元+1的指针
.front() 得到数组头的引用
.back() 得到数组的最后一个单元的引用

reverse_iterator rbegin()​:反向迭代器,指向最后一个元素 ,哪里用呢,不确定的
reverse_iterator rend()​:反向迭代器,指向第一个元素之前的位置
  1. vector对象的定义和初始化
vector v1; 	保存类型为 T 对象。默认构造函数 v1 为空。
vector v2(v1);  	v2 是 v1 的一个副本。
vector v3(n, i); 	v3 包含 n 个值为 i 的元素。
vector v4(n);  	v4 含有值初始化的元素的 n 个副本。
	若T为int,则值为n个零元素。理解为初始化的一部分。
2. map/ unordered_map;键值对容器

需要注意的是,map中的元素是按照key值从小到大排列的,不是value
所以顺序输出是map初始赋值的顺序是不一样的。
https://www.w3cschool.cn/cpp/cpp-fu8l2ppt.html

unordered_map是无序的哈希表,
两者的基本操纵是一致的。表面上看来,唯一的区别就是map的输出是有序的,而unordered_map是无序的.
但是更深层次,两者的底层实现是不一样的map是红黑树,而unordered_map是哈希表

  1. 基本操作。
.begin() 返回指向map头部的迭代器。
.end() 返回指向map尾部的迭代器。
mapiimap;
iimap["dede1"]=12;iimap["dede2"]=13;iimap["dede3"]=14;

1 头文件: #include
2 创建map对象:map iimap;
3 数组方式插入新元素。iimap["de"] =12;
  insert插入新元素。iimap.insert(pair("dede",12));
  insert插入新元素。
    iimap.insert(map::value_type ("dede",12) );
4 前向迭代器访问元素,键值对
  	map ::iterator it;
  	it=iimap.begin();
  	for(;it!=iimap.end();it++)
  	cout<first<<" "<second< ::reverse_iterator it;
		it=iimap.rbegin();
		for(;it!=iimap.rend();it++){
		cout<first<<" "<second<::iterator it;
	it=iimap.find("de");找到键对应的下表。
	if(it!=iimap.end()) cout<first< 

2 算法

1 依照key值从大到小输出
		注意,map::reverse_iterator it;
		for(auto it=iimap.rbegin();it!=iimap.rend();it++){
        cout<first<<" :" <second<first<<" :" <second<>iimap;
  iimap["张三"]++;在没有赋初值的情况下,默认是零开始。
3. stack栈

C++ STL Stack常用方法详解 https://blog.csdn.net/weixin_44723496/article/details/107379359
1 基本操作

1 头文件:#include
2 创建或初始化栈对象: stack mystack;
		int,string,double,float.
3 插入元素 mystack.push(12);
4 top()访问栈顶元素  mystack.top();返回栈顶元素
5 pop()删除栈顶元素  mystack.pop();
6 判断栈是否为空,mystack.empty();
7 尺寸   mystack.size();
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/330286.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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