笔记(2015-07-24)

STL方面的笔记

以下为vector queue map set stack的基本用法 
可编译结合注释查看

 

 

  1 #include <vector>
  2 #include <iostream>
  3 #include <queue>
  4 #include <map>
  5 #include <set>
  6 #include <stack>
  7 using namespace std;
  8 
  9 #define REP(n) for(int o=0;o<n;o++)
 10 
 11 int main(){
 12 
 13     cout<<"vector功能"<<endl;
 14     vector<int> vec;//声明名称为vec的整数型向量
 15     vector<int>::iterator it_vec;//迭代器
 16     vec.clear();//清空
 17     cout<<"插入数据"<<endl;
 18     vec.push_back(1);//在末尾插入
 19     vec.push_back(3);
 20     it_vec=vec.end();//指向vec的末尾
 21     it_vec--;//向前移动一位(既1和3的中间)
 22     vec.insert(it_vec,2);//在此处插入2
 23     REP(vec.size())cout<<vec[o]<<endl;//访问数据
 24     cout<<"清除第一个数据后输出"<<endl;
 25     vec.erase(vec.begin());
 26     it_vec=vec.begin();
 27     REP(vec.size()){
 28         cout<<*it_vec<<endl;//访问数据
 29         it_vec++;//向后一位
 30     }
 31     cout<<"#####################################"<<endl<<endl;
 32 
 33 
 34     cout<<"map功能"<<endl;
 35     map<string,vector<int> > m;//声明 key的类型为string value类型为int型vector 的 映射m
 36     map<string,vector<int> >::iterator it_map;//迭代器
 37     cout<<"插入数据"<<endl;
 38     m.insert(pair<string,vector<int> >("aaa",vec));
 39     it_map=m.find("aaa");//或者指定key的位置(迭代器)
 40     cout<<"key:"<<it_map->first<<endl;
 41     cout<<"value:"<<endl;
 42     REP(vec.size())cout<<"   "<<vec[o]<<endl;
 43     cout<<"查找一个不存在的数据 find()会返回map的末尾"<<endl;
 44     it_map=m.find("Niconiconi~");
 45     if(it_map==m.end())cout<<"No Niconiconi~"<<endl;
 46     cout<<"#####################################"<<endl<<endl;
 47 
 48     cout<<"set功能"<<endl;
 49     set<int> s;//声明一个整数型集合
 50     set<int>::iterator it_set;//迭代器
 51     cout<<"倒叙插入数据并且有重复的4"<<endl;
 52     s.insert(5);
 53     s.insert(4);
 54     s.insert(4);
 55     s.insert(2);
 56     s.insert(1);
 57     it_set=s.begin();
 58     while(it_set!=s.end()){
 59         cout<<*it_set<<endl;
 60         it_set++;
 61     }
 62     cout<<"输出时4自动保留一个,并且数据由小到大输出"<<endl;
 63     cout<<"#####################################"<<endl<<endl;
 64 
 65 
 66 
 67     cout<<"queue功能"<<endl;
 68     queue<string> q;//声明一个字符串型队列 q
 69     cout<<"按顺序插入"<<endl;
 70     q.push("L");
 71     q.push("O");
 72     q.push("V");
 73     q.push("E");
 74     q.push("L");
 75     q.push("I");
 76     q.push("V");
 77     q.push("E");
 78     q.push("!");
 79     while(!q.empty()){
 80         cout<<q.front();
 81         q.pop();
 82     }
 83     cout<<endl;
 84     cout<<"先入队的先出来"<<endl;
 85     cout<<"#################################"<<endl<<endl;
 86 
 87 
 88 
 89     cout<<"priority_queue功能"<<endl;
 90     priority_queue<string> pq;//声明priority_queue一个字符串型优先队列
 91     cout<<"乱序插入具有可比较大小的数据"<<endl;
 92     pq.push("B");
 93     pq.push("A");
 94     pq.push("C");
 95     while(!pq.empty()){
 96         cout<<pq.top();
 97         pq.pop();
 98     }
 99     cout<<endl;
100     cout<<"权值大的先出来"<<endl;
101     cout<<"###############################"<<endl<<endl;
102 
103     cout<<"stack功能"<<endl;
104     stack<string> sta;//声明一个字符串类型的栈
105     cout<<"倒序插入数据"<<endl;
106     sta.push("+");
107     sta.push("+");
108     sta.push("C");
109         while(!sta.empty()){
110         cout<<sta.top();
111         sta.pop();
112     }
113     cout<<endl;
114     cout<<"先进入的后出来"<<endl;
115     return 0;
116 }

 

编译结果:

vector功能 
插入数据 



清除第一个数据后输出 

3

#

map功能 
插入数据 
key:aaa 
value: 


查找一个不存在的数据 find()会返回map的末尾 
No Niconiconi~

#

set功能 
倒叙插入数据并且有重复的4 




输出时4自动保留一个,并且数据由小到大输出

#

queue功能 
按顺序插入 
LOVELIVE! 
先入队的先出来

#

priority_queue功能 
乱序插入具有可比较大小的数据 
CBA 
权值大的先出来

#

stack功能 
倒序插入数据 
C++ 
先进入的后出来

转载于:https://www.cnblogs.com/ohyee/p/4680705.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/290756.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Avalonia跨平台入门第十篇之控件的锁定

在前面分享的几篇中咱已经玩耍了Popup、ListBox多选、Grid动态分、RadioButton模板、控件的拖放效果、控件的置顶和置底;今天趁着有时间接着对拖放到Canvas上的控件进行锁定的效果,最终实现的效果如下图:关于控件的锁定实现代码:接下来的文章中我会分享控件在Canvas范围内拖拽和…

开放一些常见功能的工具类代码

public static class CommonUtil{/// <summary>/// 显示表单/// </summary>/// <param name"view"></param>/// <param name"panelKey"></param>/// <returns></returns>public static void ShowForm(thi…

ios之第一个图形化界面

1、创建ios项目 1、create Xcode ->simpleViewApplication -> input Program name 2、在控制器里面加入代码 我们在viewControl.m里面加上UILabel控件&#xff0c;这个控件和Android 里面的TextView类似&#xff0c;具体代码如下// // ViewController.m // SecondHello…

Memcached简介

在Web服务开发中&#xff0c;服务端缓存是服务实现中所常常采用的一种提高服务性能的方法。其通过记录某部分计算结果来尝试避免再次执行得到该结果所需要的复杂计算&#xff0c;从而提高了服务的运行效率。 除了能够提高服务的运行效率之外&#xff0c;服务端缓存还常常用来提…

JAVA设计模式之门面模式(外观模式)

医院的例子 现代的软件系统都是比较复杂的&#xff0c;设计师处理复杂系统的一个常见方法便是将其“分而治之”&#xff0c;把一个系统划分为几个较小的子系统。如果把医院作为一个子系统&#xff0c;按照部门职能&#xff0c;这个系统可以划分为挂号、门诊、划价、化验、收费、…

里程碑 .Net7再更新,从此彻底碾压Java!

.NET 7 Preview1发布了&#xff0c;没时间实操&#xff1f;先快来看看.NET7的七项重大改进&#xff01;1、不再支持.NET 7应用程序、运行时和SDK的多级查找&#xff08;MLL&#xff09;2、PATH停止向.NET 7运行时和SDK添加32位.NET3、默认情况下&#xff0c; dotnet build/publ…

软件架构知识体系

2019独角兽企业重金招聘Python工程师标准>>> 由于[GOF95]是论述软件模式的著作的第一本&#xff0c;也是OO设计理论著作中最流行的一本&#xff0c;因此有些人常常使用设计模式&#xff08;Design Pattern&#xff09;一词来指所有直接处理软件的架构、设计、程序实…

C语言之最好理解的通过函数指针作为参数实现回调函数

1、函数指针回调解释 回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数 2、代码实现 #include <stdio.h>int sub(int a, int b);int sub1(int a, int b, in…

asp.net 的page 基类页面 做一些判断 可以定义一个基类页面 继承Page类 然后重写OnPreLoad事件...

public class BasePage:Page protected override void OnPreLoad(EventArgs e){ base.OnPreLoad(e); .................. } 这样 就可以在基类页面 统一做一些判断了 转载于:https://www.cnblogs.com/maijin/p/4681871.html

C#不要再使用Npoi啦,使用MiniExcel操作Excel文件更快更高效!

1.简介MiniExcel简单、高效避免OOM的.NET处理Excel查、写、填充数据工具。目前主流框架如Npoi 需要将数据全载入到内存方便操作&#xff0c;但这会导致内存消耗问题。MiniExcel 尝试以 Stream 角度写底层算法逻辑&#xff0c;能让原本1000多MB占用降低到几MB&#xff0c;避免内…

#、%和$符号在OGNL表达式中的作用

#、%和$符号在OGNL表达式中经常出现&#xff0c;而这三种符号也是开发者不容易掌握和理解的部分。在这里笔者简单介绍它们的相应用途。1&#xff0e;#符号的用途一般有三种。 1)访问非根对象属性&#xff0c;例如示例中的#session.msg表达式&#xff0c;由于Struts 2中值栈被…

Android之获取证书文件(pfx格式)的公钥和私钥

1、把pfx证书文件放入sdcard adb push ***.pfx /sdcard/ 2、解析获取公钥和私钥 //证书解析 String path = Environment.getExternalStorageDirectory().getPath() + "/sim_shield.pfx";public static Map<String, byte[]> parsePfx(String pfxPath, String…

go和python切片的不同

2019独角兽企业重金招聘Python工程师标准>>> go有切片slice类型&#xff0c;python有列表和元组&#xff0c;这两种语言都有切片操作。 但是它们的切片操作是完全不同的。 首先说第一个&#xff0c;go的切片&#xff0c;其成员是相同类型的&#xff0c;python的列…

编程算法 - 切割排序 代码(C)

切割排序 代码(C)本文地址: http://blog.csdn.net/caroline_wendy排序切割, 把一个数组分为, 大于k\小于k\等于k的三个部分.能够使用高速排序的Partition函数, 进行处理, 把大于k的放在左边, 小于k的放在右边.使用一个变量记录中间的位置, 则时间复杂度为O(3n/2).代码:/** main…

【C#/.NET】.NET6中全局异常处理

微信公众号&#xff1a;趣编程ACE关注可了解每日一更的.NET日常实战开发技巧&#xff0c;欢迎公众号留言开发 获取源码;.NET6中全局异常处理异常处理是我们在程序开发中不可或缺的一环&#xff0c;下文我将会结合程序Sample讲解如何在.NET6中有效处理异常。Try-Ctach 块包裹自定…

JAVA学习笔记--初识容器类库

一、前言 JAVA中一切皆为对象&#xff0c;因而&#xff0c;持有对象显得尤为重要。 在JAVA中&#xff0c;我们可以通过创建一个对象的引用的方式来持有对象&#xff1a; HoldingObject holding; 也可以创建一个对象数组来持有一组特定类型的对象&#xff1a; HoldingObject hol…

如何保证执行异步方法时不会遗漏 await 关键字

前言在.NET Core 中已经广泛使用异步编程&#xff0c;代码中充斥着大量的 async 和 await 关键字。但有时候&#xff0c;调用一个异步方法时可能会忘了写 await。这会造成什么问题呢&#xff1f;问题重现示例代码如下&#xff1a;[HttpGet] public async Task<IEnumerable&l…

Andorid之打包出现Proguard returned with erro code 1.See console解决办法

1、错误 我们进行签名操作的时候&#xff0c;提示下面错误 Proguard returned with erro code 1.See console 然后在console里面提示这个 you should check if you need to specify additional program jars 2、原因 找不到引用包导致 2、解决办法 我们可以在proguard-projec…

CCF-CSP认证201312-1(出现次数最多的数)

CCF-CSP认证201312-1&#xff08;出现次数最多的数&#xff09; 问题描述   给定n个正整数&#xff0c;找出它们中出现次数最多的数。如果这样的数有多个&#xff0c;请输出其中最小的一个。 输入格式   输入的第一行只有一个正整数n(1 ≤ n ≤ 1000)&#xff0c;表示数字…

Java的原始数据类型一共就8个

Java的原始数据类型一共就8个&#xff0c;分别是&#xff1a;byte、short、int、long、boolean、char、float、double。注意这些是大小写敏感的&#xff0c;而Boolean是boolean的封装类(wrapper class)。 在java中一个类只能有一个直接父类&#xff0c;但是可以实现多个接口&a…