C++中map提供的是一种键值对容器,里面的数据都是成对出现的,如下图:每一对中的第一个值称之为关键字(key),每个关键字只能在map中出现一次;第二个称之为该关键字的对应值。
——————————————————————————————————————————————
一. 声明
#include<map>
map<int, string> ID_Name;
map<int, string> ID_Name = {
{ 2015, "Jim" },
{ 2016, "Tom" },
{ 2017, "Bob" } };
——————————————————————————————————————————————
二. 插入操作
2.1 使用[ ]进行单个插入
map<int, string> ID_Name;
ID_Name[2015] = "Tom";
2.1 使用insert进行单个和多个插入
insert共有4个重载函数:
pair<iterator,bool> insert (const value_type& val);
iterator insert (const_iterator position, const value_type& val);
void insert (InputIterator first, InputIterator last);
void insert (initializer_list<value_type> il);
下面是具体使用示例:
#include <iostream>
#include <map>
int main()
std::map<char, int> mymap;
mymap.insert(std::pair<char, int>('a', 100));
mymap.insert(std::pair<char, int>('z', 200));
std::pair<std::map<char, int>::iterator, bool> ret;
ret = mymap.insert(std::pair<char, int>('z', 500));
if (ret.second == false) {
std::cout << "element 'z' already existed";
std::cout << " with a value of " << ret.first->second << '\n';
std::map<char, int>::iterator it = mymap.begin();
mymap.insert(it, std::pair<char, int>('b', 300));
mymap.insert(it, std::pair<char, int>('c', 400));
std::map<char, int> anothermap;
anothermap.insert(mymap.begin(), mymap.find('c'));
anothermap.insert({ { 'd', 100 }, {'e', 200} });
return 0;
——————————————————————————————————————————————
三. 取值
Map中元素取值主要有at和[ ]两种操作,at会作下标检查,而[]不会。
map<int, string> ID_Name;
cout<<ID_Name[2016].c_str()<<endl;
ID_Name.at(2016) = "Bob";
——————————————————————————————————————————————
四. 容量查询
bool empty();
size_t size();
size_t max_size();
size_t count( const Key& key ) const;
——————————————————————————————————————————————
五. 迭代器
共有八个获取迭代器的函数:* begin, end, rbegin,rend* 以及对应的 * cbegin, cend, crbegin,crend*。
二者的区别在于,后者一定返回 const_iterator,而前者则根据map的类型返回iterator 或者 const_iterator。const情况下,不允许对值进行修改。如下面代码所示:
map<int,int>::iterator it;
map<int,int> mmap;
const map<int,int> const_mmap;
it = mmap.begin();
mmap.cbegin();
const_mmap.begin();
const_mmap.cbegin();
返回的迭代器可以进行加减操作,此外,如果map为空,则 begin = end。
——————————————————————————————————————————————
六. 删除交换
6.1 删除
iterator erase( iterator pos )
iterator erase( const_iterator first, const_iterator last );
size_t erase( const key_type& key );
void clear();
6.2 交换
void swap( map& other );
——————————————————————————————————————————————
七. 顺序比较
key_compare key_comp() const;
map<char,int> mymap;
map<char,int>::key_compare mycomp = mymap.key_comp();
mymap['a']=100;
mymap['b']=200;
mycomp('a', 'b');
——————————————————————————————————————————————
八. 查找
iterator find (const key_type& k);
const_iterator find (const key_type& k) const;
std::map<char,int> mymap;
std::map<char,int>::iterator it;
mymap['a']=50;
mymap['b']=100;
mymap['c']=150;
mymap['d']=200;
it = mymap.find('b');
if (it != mymap.end())
mymap.erase (it);
——————————————————————————————————————————————
九. 操作符
operator: == != < <= > >=
注意
对于==运算符, 只有键值对以及顺序完全相等才算成立。
C++中map提供的是一种键值对容器,里面的数据都是成对出现的,如下图:每一对中的第一个值称之为关键字(key),每个关键字只能在map中出现一次;第二个称之为该关键字的对应值。一. 声明//头文件#include<map>map<int, string> ID_Name;// 使用{}赋值是从c++11开始的,因此编译器版本过低时会报错,如visual studio 2012map<int,
2、作用域public,private,protected,以及不写时的区别? 8
3、String 是最基本的数据类型吗? 8
4、float 型float f=3.4是否正确? 8
5、语句float f=1.3;编译能否通过? 8
6、short s1 = 1; s1 = s1 + 1;有什么错? 8
7、Java 有没有goto? 8
8、int 和Integer 有什么区别? 9
9、&和&&的区别? 9
10、简述逻辑操作(&,|,^)与条件操作(&&,||)的区别? 9
11、heap 和stack 有什么区别? 9
12、Math.round(11.5) 等于多少? Math.round(-11.5)等于多少? 9
13、swtich 是否能作用在byte 上,是否能作用在long 上,是否能作用在String上? 9
14、编程题: 用最有效率的方法算出2 乘以8 等於几? 9
15、有没有length()这个方法? String 有没有length()这个方法? 9
16、在JAVA 中,如何跳出当前的多重嵌套循环? 9
17、构造器Constructor 是否可被override? 9
18、两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对? 9
19、是否可以继承String 类? 9
20、以下二条语句返回值为true 的有: 10
21、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 10
22、我们在web 应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串? 10
23、String 和StringBuffer 的区别? 10
24、String, StringBuffer StringBuilder 的区别。 10
25、Overload 和Override 的区别。Overloaded 的方法是否可以改变返回值的类型? 10
27、描述一下JVM 加载class 文件的原理机制? 10
28、char 型变量中能不能存贮一个中文汉字?为什么? 10
29、abstract class 和interface 有什么区别? 10
30、Static Nested Class 和Inner Class 的不同? 11
31、java 中会存在内存泄漏吗,请简单描述。 11
32、abstract 的method 是否可同时是static,是否可同时是native,是否可同时是synchronized? 11
33、静态变量和实例变量的区别? 11
34、是否可以从一个static 方法内部发出对非static 方法的调用? 11
35、写clone()方法时,通常都有一行代码,是什么? 11
36、GC 是什么? 为什么要有GC? 11
37、垃圾回收的优点和原理。并考虑2 种回收机制。 11
38、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收? 12
39、String s=new String(“xyz”);创建了几个String Object? 12
40、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)? 12
41、Java 的接口和
C++
的虚类的相同和不同处。 12
42、一个“.java”源文件中是否可以包含多个类(不是内部类)?有什么限制? 12
43、说出一些常用的类,包,接口,请各举5 个。 12
44、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类?是否可以implements(实现)interface(接口)? 12
45、内部类可以引用他包含类的成员吗?有没有什么限制? 12
46、java 中实现多态的机制是什么? 12
47、在java 中一个类被声明为final 类型,表示了什么意思? 12
48、下面哪些类可以被继承? 12
49、指出下面程序的运行结果: 【基础】 13
52、关于内部类: 13
53、数据类型之间的转换: 14
54、字符串操作:如何实现字符串的反转及替换? 14
55、编码转换:怎样将GB2312 编码的字符串转换为ISO-8859-1 编码的字符串? 14
56、写一个函数,要求输入一个字符串和一个字符长度,对该字符串进行分隔。 14
59、Java 编程,打印昨天的当前时刻。 15
60、java 和javasciprt 的区别。 15
61、什么时候用assert? 16
62、error和exception有什么区别 16
63、ArrayList和Vector的区别 16
64、Collection 和 Collections的区别 17
65、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别 17
66、Hash
Map
和Hashtable的区别 17
67、说出ArrayList,Vector, LinkedList的存储性能和特性 17
68、java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类? 17
69、文件读写的基本类 17
70、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么? 17
71、启动一个线程是用run()还是start()? 17
72、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 18
73、线程的基本概念、线程的基本状态以及状态之间的关系 18
74、sleep() 和 wait() 有什么区别? 18
75、socket通信(tcp/udp区别及JAVA的实现方式) 18
76、什么是java序列化,如何实现java序列化? 18
77、简述synchronized和java.util.concurrent.locks.Lock的异同 ? 18
78、abstract class Name { private String name; public abstract boolean isStupidName(String name) {}}这有何错误? 18
79、public class Something { void doSomething () { private String s = ""; int l = s.length(); } }有错吗? 18
80、abstract class Something { private abstract String doSomething ();}这好像没什么错吧? 18
81、public class Something { public int addOne(final int x) { return ++x; }}这个比较明显。 19
83、class Something { int i; public void doSomething() { System.out.println("i = " + i); }} 有什么错呢? 19
Hibernate部分 19
92、一般情况下,关系数据模型与对象模型之间有哪些匹配关系(A,B,C) 21
93、以下关于SessionFactory的说法哪些正确?(B,C) 21
94、元素有一个cascade属性,如果希望Hibernate级联保存集合中的对象,casecade属性应该取什么值?(单选)(D) 22
95、以下哪些属于Session的方法?(A,B,C,D,F) 22
96、Hibernate工作原理及为什么要用? 22
97、Hibernate是如何延迟加载? 22
98、Hibernate中怎样实现类之间的关系?(如:一对多、多对多的关系) 22
99、说下Hibernate的缓存机制 22
100、Hibernate的查询方式 23
101、如何优化Hibernate? 23
102、Struts工作机制?为什么要使用Struts? 23
103、Struts的validate框架是如何验证的? 24
104、说下Struts的设计模式 24
105、spring工作机制及为什么要用? 24
106、HttpSession session = request.getSession() 24
107、getParameter与 getAttribute的区别? 24
108、以下哪一个不是赋值符号? 25
109、以下哪个不是Collection的子接口? 25
110、.BufferedReader的父类是以下哪个? 25
112、div与span区别? 25
113、html的框架是什么? 25
114、alert怎样换行? 25
115、什么情况用HTML控件,什么情况用WEB控件,并比较两者差别 25
javaScript部分 25
116、JavaScript中的对象. 25
117、function的用法 26
118、对象的继承 27
119、this的用法 29
120、Array in JavaScript 29
121、jsp有哪些内置对象?作用分别是什么? 31
122、jsp有哪些动作?作用分别是什么? 31
123、JSP中动态INCLUDE与静态INCLUDE的区别? 31
124、两种跳转方式分别是什么?有什么区别? 31
125、如何执行一个线程安全的JSP? 31
126、JSP如何处理HTML FORM中的数据? 31
127、在JSP如何包含一个静态文件? 32
128、在JSP中如何使用注释? 32
129、在JSP中如何执行浏览重定向? 32
130、如何防止在JSP或SERVLET中的输出不被BROWSER保存在CACHE中? 32
131、在JSP中如何设置COOKIE? 32
132、在JSP中如何删除一个COOKIE? 32
133、在一个JSP的请求处理中如何停止JSP的执行 33
134、在JSP中如何定义方法 33
135、在JSP中能发送EMAIL吗 34
136、在SERVLET中我能调用一个JSP错误页吗 34
137、APPLET和JSP如何通讯 35
138、JSP如何与EJB SessionBean通讯 35
139、当我使用一个结果集时,如何防止字段为"null"的字域显示在我的HTML输入文本域中? 35
140、如何中SERVLET或JSP下载一个文件(如:binary,text,executable)? 36
141、使用useBean标志初始化BEAN时如何接受初始化参数 36
142、使用JSP如何获得客户浏览器的信息? 36
143、能象调用子程序一样调用JSP吗? 36
144、当我重编译我的JSP使用的一个类后,为什么JVM继续使用我的老CLASS? 36
145、<%@include file="abc.jsp"%>与<jsp:include page="abc.jsp"/>之间的差别? 36
146、JSP的缺点? 36
148、如何实现JSP的国际化? 36
150、如何在JSP中包括绝对路径文件? 使用URLConnection即可。 37
151、在servlets和JSP之间能共享session对象吗? 37
152、如何设置cookie在某一时间后过期? 37
153、如何获得当前的sessions数? 37
154、能设置一些代码在我所有的JSP文件之上运行?如果可以,能共享吗? 37
155、对一个JSP页,如果多个客户端同时请求它,同步可能吗? 37
156、在jsp:useBean语法中使用beanName有何好处? 37
157、当我使用<jsp:forward>时,在浏览器的地址栏没有改变? 37
158、如何转换JSP 0.9版本的文件到JSP1.1? 37
160、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么? 38
161、AJAX的全称是什么? 介绍一下AJAX 38
162、Ajax主要包含了哪些技术? 38
163、主要的Ajax框架都有什么? 38
164、介绍一下XMLHttpRequest对象 38
165、AJAX应用和传统Web应用有什么不同? 38
166、如何用JQuery进行表单验证? 39
167、Prototype如何实现页面局部定时刷新? 40
168、Prototype如何为一个Ajax添加一个参数? 40
169、Ajax请求总共有多少种Callback? 41
170、Javascript如何发送一个Ajax请求? 41
171、AJAX都有哪些有点和缺点? 41
172、Ajax和javascript的区别? 41
Servlet部分 42
174、JAVA SERVLET API中forward() 与redirect()的区别? 42
178、如何现实servlet的单线程模式 42
179、页面间对象传递的方法 42
180、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么? 42
181、四种会话跟踪技术 42
182、Request对象的主要方法 43
183、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串? 43
184、Servlet执行时一般实现哪几个方法? 44
185、getServletContext()和getServletConfig()的意思 44
186、Hashtable和Hash
Map
44
187、JAVA SERVLET API中forward() 与redirect()的区别? 44
189、Can a Java Thread be started from Servlet class, and what will be the implications? 45
190、What is HTTP Session tracking and why is it important? 45
191、What is session management, and how is it different from session tracking? 45
192、Can I use Hidden form field to track session? 45
194、In a architecture pattern like MVC, it is mandatory that Servlet should be the controller, why not JSP? 46
195、Why JSP is used as View part of MVC ? 46
196、Can a database connection pool be instantiated in init method of servlet instead of server connection pool? What will be the problem? 46
综合部分 46
197、Class.forName的作用?为什么要用? 47
198、Jdo是什么? 47
199、在ORACLE大数据量下的分页解决方法。一般用截取ID方法,还有是三层嵌套方法。 47
200、xml有哪些解析技术?区别是什么? 48
201、你在项目中用到了xml技术的哪些方面?如何实现的? 48
202、用jdom解析xml文件时如何解决中文问题?如何解析? 48
203、编程用JAVA解析XML的方式. 49
204、EJB2.0有哪些内容?分别用在什么场合? EJB2.0和EJB1.1的区别? 51
205、EJB与JAVA BEAN的区别? 51
206、EJB的基本架构 51
207、MVC的各个部分都有那些技术来实现?如何实现? 52
208、J2EE是什么? 52
209、WEB SERVICE名词解释。JSWDL开发包的介绍。JAXP、JAXM的解释。SOAP、UDDI,WSDL解释。 52
210、STRUTS的应用(如STRUTS架构) 52
211、开发中都用到了那些设计模式?用在什么场合? 52
212、UML方面 52
213、如何校验数字型? 53
214、CORBA是什么?用途是什么? 53
215、写一个方法,实现字符串的反转,如:输入abc,输出cba 53
216、数据类型之间的转换 53
217、如何取得年月日,小时分秒 53
218、如何取得从1970年到现在的毫秒数 53
219、如何格式化日期 53
220、文件和目录(I/O)操作 54
230、J2EE的优越性 54
231、Java语言的11个关键特性. 54
232、说出Servlet的生命周期,并说出Servlet和CGI的区别。 55
233、说出在JSP页面里是怎么分页的? 55
234、存储过程和函数的区别 55
235、事务是什么? 55
236、游标的作用?如何知道游标已经到了最后? 55
237、触发器分为事前触发和事后触发,这两种触发有和区别。语句级触发和行级触发有何区别。 56
238、EJB容器提供的服务 56
239、EJB的角色和三个对象 56
240、EJB的几种类型 56
241、bean 实例的生命周期 56
242、激活机制 56
243、remote接口和home接口主要作用 56
244、客服端调用EJB对象的几个基本步骤 56
245、 如何给weblogic指定大小的内存? 56
246、如何设定的weblogic的热启动模式(开发模式)与产品发布模式? 57
247、如何启动时不需输入用户名与密码? 57
248、在weblogic管理制台中对一个应用域(或者说是一个网站,Domain)进行jms及ejb或连接池等相关信息进行配置后,实际保存在什么文件中? 57
250、如何查看在weblogic中已经发布的EJB? 57
251、如何在weblogic中进行ssl配置与客户端的认证配置或说说j2ee(标准)进行ssl的配置 57
252、在weblogic中发布ejb需涉及到哪些配置文件 57
253、EJB需直接实现它的业务接口或Home接口吗,请简述理由. 57
254、说说在weblogic中开发消息Bean时的persistent与non-persisten的差别 57
255、说说你所熟悉或听说过的j2ee中的几种常用模式?及对设计模式的一些看法 57
256、现在输入n个数字,以逗号,分开; 58
257、金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)->(一千零一拾一元整)输出。 58
259、Spring和Struts的区别? 58
260、如何用Struts实现国际化? 58
261、如何实现struts的validator框架? 59
262、如何在struts中配置数据源在,什么文件?用什么标签?如何取出DataSource? 60
263、Struts框架如何取得消息资源文件中的信息? 60
264、Struts中如何基于validation.xml来启用客户端验证? 60
266、请你谈谈SSH整合 60
267、ActionForm bean的作用 61
268、Spring如何创建一个数据连接池 61
269、Spring如何配置一个bean来从JNDI得到DataSource 61
270、Bean的销毁 61
271、Spring如何获取Bean 61
272、Spring和Struts的区别? 62
273、什么是aop,aop的作用是什么? 62
275、依赖注入的方式有几种,各是什么? 62
276、spring中的核心类有那些,各有什么作用? 62
277、ApplicationContext的作用 63
278、如何实现资源管理 63
279、如何实现加入web框架中 63
280、如何实现事件处理 63
281、spring的ioc及di代表什么意思? 63
283、spring的配置的主要标签是什么?有什么作用? 64
284、spring与ejb2.0的事务管理比较的优缺点? 64
286、在spring中有几种事务管理,分别是什么? 64
287、在spring中如何配代码的事务管理? 65
288、在spring中如何配容器的事务管理,相关的类有那些? 65
289、如果spring与hibernate结合在一起可以不需要hibernate.cfg.xml文件是否正确? 65
290、spring+hibernate的配置文件中的主要类有那些?如何配置? 65
291、spring+hibernate的代码实现中,对于实现类一定继承于一个类是那一个,它有什么作用 66
292、如何配置spring+struts? 66
293、如何在web环境中配置applicationContext.xml文件? 66
294、BS与CS的联系与区别 66
295、Servlet的生命周期 68
296、如何现实Servlet的单线程模式 68
297、Servlet执行时一般实现哪几个方法? 68
298、j2ee常用的设计模式?说明工厂模式。 68
299、应用服务器与WEB SERVER的区别? 68
300、应用服务器有那些? 68
301、说出数据连接池的工作机制是什么? 68
302、页面间对象传递的方法 69
303、四种会话跟踪技术 69
304、J2EE 是技术还是平台还是框架? 69
305、同步和异步有何异同,在什么情况下分别使用他们?举例说明。 69
306、启动一个线程是用run()还是start()? 69
307、线程的基本概念、线程的基本状态以及状态之间的关系 69
308、java 中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 70
309、JSP中动态INCLUDE与静态INCLUDE的区别? 70
310、JSP的常用指令 70
311、什么情况下调用doGet()和doPost()? 70
312、JSP和Servlet 有哪些相同点和不同点,他们之间的联系是什么? 70
313、Request对象的主要方法: 70
314、JSP有哪些动作?作用分别是什么? 71
315、JSP的两种跳转方式分别是什么?有什么区别? 71
316、EJB是基于哪些技术实现的?并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别。 71
317、EJB与JAVA BEAN的区别? 72
318、EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的? 72
319、EJB规范规定EJB中禁止的****作有哪些? 72
320、remote接口和home接口主要作用 72
321、bean 实例的生命周期 72
322、EJB的激活机制 73
323、EJB的几种类型 73
324、客服端调用EJB对象的几个基本步骤 73
325、EJB需直接实现它的业务接口或Home接口吗,请简述理由。 73
327、说说在weblogic中开发消息Bean时的persistent与non-persisten的差别 73
328、你在项目中用到了xml技术的哪些方面?如何实现的? 73
329、JAVA SERVLET API中forward() 与redirect()的区别? 73
330、面向对象的特征? 73
331、Java中的异常处理机制? 74
333、Java中的事件处理机制? 74
334、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收? 75
335、GC是什么?为什么要有GC (基础) ? 75
336、请说出你所知道的线程同步的方法。 75
337、什么是Java序列化,如何实现Java 序列化? 75
338、介绍Java中的Collection Framework(包括如何写自己的数据结构)? 75
339、String是最基本的数据类型吗? 76
340、谈谈final, finally, finalize 的区别? 76
341、Static Nested Class 和Inner Class的不同? 76
342、Hash
Map
和Hashtable的区别? 76
343、ArrayList和Vector的区别? 76
344、Collection 和Collections的区别? 77
345、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型? 77
346、String与StringBuffer的区别? 77
347、静态变量和实例变量的区别? 77
348、List、
Map
、Set三个接口,存取元素时,各有什么特点? 77
349、说出ArrayList,Vector, LinkedList的存储性能和特性。 77
350、在Java中一个类被声明为final类型,表示了什么意思? 77
351、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)? 77
352、String s = new String("xyz");创建了几个String Object? 77
353、Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 77
354、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 78
355、数组有没有length()这个方法? String 有没有length()这个方法? 78
356、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别? 78
357、List, Set,
Map
是否继承自Collection接口? 78
358、abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized? 78
360、构造器Constructor是否可被override? 78
361、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 78
362、try {}里有一个return 语句,那么紧跟在这个try后的finally {}里的code 会不会被执行,什么时候被执行,在return前还是后? 78
363、描述一下JVM加载class文件的原理机制? 78
364、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么? 78
365、Java中会存在内存泄漏吗,请简单描述。 78
366、是否可以从一个static方法内部发出对非static方法的调用? 79
367、写clone()方法时,通常都有一行代码,是什么? 79
368、在Java中,如何跳出当前的多重嵌套循环? 79
370、给我一个你最
常见
到的runtime exception。 79
371、写一个Singleton出来 79
372、Java 的通信编程,编程题(或问答),用JAVA SOCKET编程,读服务器几个字符,再写入本地显示? 80
373、用JAVA实现一种排序,JAVA类实现序列化的方法(二种)? 如在 COLLECTION框架中,实现比较要实现什么样的接口? 81
374、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 82
380、ArrayList和Vector的区别, Hash
Map
和Hashtable的区别 83
381、== 与 equals 的区别: 83
382、写一个 SQL Server 中的存储过程: 83
383、写一个 Oracle 中的存储过程: 84
384、HTTP 的请求过程: 84
385、多线程的优点 84
387、java是否存在内存泄露 85
388、Corba概述 85
389、toString方法的概述 85
390、Object类的概述 85
391、什么叫抽象类?抽象类跟接口有什么区别?为什么引进数据接口概念? 85
392、doGet与doPut的区别? 85
393、多线程实现有那几种方法,同步有哪几种方法? 85
394、JSP页面的跳转? 86
395、类变量的初始化 86
396、数组的定义 86
397、说明List和Set的区别 86
c++
的
map
中通过key获取value的方法
一般是value =
map
[key],或者另一种迭代器的方式
1、在
map
中,由key查找value时,首先要判断
map
中是否包含key。
2、如果不检查,直接返回
map
[key],可能会出现意想不到的行为。如果
map
包含key,没有问题,如果
map
不包含key,使用下标有一个危险的副作用,会在
map
中插入一个key的元素,value取默认值,返回...
map
提供一对一的数据处理,key-value键值对,其类型可以自己定义,其中第一个成为关键字,第二个称为关键字的值。
关键字不能修改,值可以修改。
map
内部有序(自动排序),查找复杂度为log(n)。
map
插入、删除都很方便。
map
用法
必须引用的包
#include <
map
>
map
<string,int>
map
s;
基本方法快速查找
map
s.insert()或当数组用
map
s.find()
请一定要注意:warning:!Info.plist文件在单元测试目录下也有一个,不要改错了哦。
地图可以显示,但是不能使用搜索路线,搜索周边等功能
从2.6.0的百度地图升级上来的同学要注意:warning:了!
配置项有一项很容易被忽略的,官方文档上是这样描述的:
在使用Xcode6进行SDK开发过程中,需要在info.plist中添加:Bundle display name ,且其值不能为空(Xcode6新建的项目没有此配置,若没有会造成manager start failed)
具体的设置方法是在Info.plist文件中添加一个键Bundle display name,类型String,值填写你的应用的名字。
iOS9下百度地图不能联网
苹果在iOS9中默认情况下要去开发者必须全部使用HTTPS方式进行安全通信。但是事实是,国内大部分应用使用的都是HTTP或者混合使用。总之
【原书名】
C++
Primer (4th Edition)
【原出版社】 Addison Wesley/Pearson
【作者】 (美)Stanley B.Lippman,Josée LaJoie,Barbara E.Moo
【译者】 李师贤 蒋爱军 梅晓勇 林瑛
【丛书名】 图灵计算机科学丛书
【出版社】 人民邮电出版社
【书号】 7-115-14554-7
【开本】 16开
【页码】 900
【出版日期】 2006-3-1
【版次】 4-1
【内容简介】
本书是久负盛名的
C++
经典教程,其内容是
C++
大师Stanley B. Lippman丰富的实践经验和
C++
标准委员会原负责人Josée Lajoie对
C++
标准深入理解的完美结合,已经帮助全球无数程序员学会了
C++
。本版对前一版进行了彻底的修订,内容经过了重新组织,更加入了
C++
先驱Barbara E. Moo在
C++
教学方面的真知灼见。既显著改善了可读性,又充分体现了
C++
语言的最新进展和当前的业界最佳实践。书中不但新增大量教学辅助内容,用于强调重要的知识点,提醒
常见
的错误,推荐优秀的编程实践,给出使用提示,还包含大量来自实战的示例和习题。对
C++
基本概念和技术全面而且权威的阐述,对现代
C++
编程风格的强调,使本书成为
C++
初学者的最佳指南;对于中高级程序员,本书也是不可或缺的参考书。本书的前言阐述了 第4版和前一版的不同之处。
【目录信息】
第1章 快速入门 1
1.1 编写简单的
C++
程序 2
1.2 初窥输入/输出 5
1.2.1 标准输入与输出对象 5
1.2.2 一个使用IO库的程序 5
1.3 关于注释 8
1.4 控制结构 10
1.4.1 while语句 10
1.4.2 for语句 12
1.4.3 if语句 14
1.4.4 读入未知数目的输入 15
1.5 类的简介 17
1.5.1 Sales_item类 17
1.5.2 初窥成员函数 19
1.6
C++
程序 21
小结 22
术语 22
第一部分 基本语言
第2章 变量和基本类型 29
2.1 基本内置类型 30
2.1.1 整型 30
2.1.2 浮点型 32
2.2 字面值常量 34
2.3 变量 38
2.3.1 什么是变量 39
2.3.2 变量名 40
2.3.3 定义对象 42
2.3.4 变量初始化规则 44
2.3.5 声明和定义 45
2.3.6 名字的作用域 46
2.3.7 在变量使用处定义变量 48
2.4 const限定符 49
2.5 引用 50
2.6 typedef名字 53
2.7 枚举 53
2.8 类类型 54
2.9 编写自己的头文件 57
2.9.1 设计自己的头文件 58
2.9.2 预处理器的简单介绍 60
小结 62
术语 62
第3章 标准库类型 67
3.1 命名空间的using声明 68
3.2 标准库string类型 70
3.2.1 string对象的定义和初始化 70
3.2.2 String对象的读写 71
3.2.3 string对象的操作 72
3.2.4 string对象中字符的处理 76
3.3 标准库vector类型 78
3.3.1 vector对象的定义和初始化 79
3.3.2 vector对象的操作 81
3.4 迭代器简介 83
3.5 标准库bitset类型 88
3.5.1 bitset对象的定义和初始化 88
3.5.2 bitset对象上的操作 90
小结 92
术语 92
第4章 数组和指针 95
4.1 数组 96
4.1.1 数组的定义和初始化 96
4.1.2 数组操作 99
4.2 指针的引入 100
4.2.1 什么是指针 100
4.2.2 指针的定义和初始化 101
4.2.3 指针操作 104
4.2.4 使用指针访问数组元素 106
4.2.5 指针和const限定符 110
4.3 C风格字符串 113
4.3.1 创建动态数组 117
4.3.2 新旧代码的兼容 120
4.4 多维数组 122
小结 124
术语 125
第5章 表达式 127
5.1 算术操作符 129
5.2 关系操作符和逻辑操作符 131
5.3 位操作符 134
5.3.1 bitset对象或整型值的使用 135
5.3.2 将移位操作符用于IO 137
5.4 赋值操作符 137
5.4.1 赋值操作的右结合性 138
5.4.2 赋值操作具有低优先级 138
5.4.3 复合赋值操作符 139
5.5 自增和自减操作符 140
5.6 箭头操作符 142
5.7 条件操作符 143
5.8 sizeof操作符 144
5.9 逗号操作符 145
5.10 复合表达式的求值 145
5.10.1 优先级 145
5.10.2 结合性 146
5.10.3 求值顺序 148
5.11 new和delete表达式 150
5.12 类型转换 154
5.12.1 何时发生隐式类型转换 154
5.12.2 算术转换 155
5.12.3 其他隐式转换 156
5.12.4 显式转换 158
5.12.5 何时需要强制类型转换 158
5.12.6 命名的强制类型转换 158
5.12.7 旧式强制类型转换 160
小结 161
术语 162
第6章 语句 165
6.1 简单语句 166
6.2 声明语句 167
6.3 复合语句(块) 167
6.4 语句作用域 168
6.5 if语句 169
6.6 switch语句 172
6.6.1 使用switch 173
6.6.2 switch中的控制流 173
6.6.3 default标号 175
6.6.4 switch表达式与case标号 176
6.6.5 switch内部的变量定义 176
6.7 while语句 177
6.8 for循环语句 179
6.8.1 省略for语句头的某些部分 180
6.8.2 for语句头中的多个定义 181
6.9 do while语句 182
6.10 break语句 183
6.11 continue语句 184
6.12 goto语句 185
6.13 try块和异常处理 186
6.13.1 throw表达式 186
6.13.2 try块 187
6.13.3 标准异常 189
6.14 使用预处理器进行调试 190
小结 192
术语 192
第7章 函数 195
7.1 函数的定义 196
7.1.1 函数返回类型 197
7.1.2 函数形参表 198
7.2 参数传递 199
7.2.1 非引用形参 199
7.2.2 引用形参 201
7.2.3 vector和其他容器类型的形参 206
7.2.4 数组形参 206
7.2.5 传递给函数的数组的处理 209
7.2.6 main:处理命令行选项 210
7.2.7 含有可变形参的函数 211
7.3 return语句 211
7.3.1 没有返回值的函数 212
7.3.2 具有返回值的函数 212
7.3.3 递归 216
7.4 函数声明 217
7.5 局部对象 220
7.5.1 自动对象 220
7.5.2 静态局部对象 220
7.6 内联函数 221
7.7 类的成员函数 222
7.7.1 定义成员函数的函数体 223
7.7.2 在类外定义成员函数 225
7.7.3 编写Sales_item类的构造
函数 225
7.7.4 类代码文件的组织 227
7.8 重载函数 228
7.8.1 重载与作用域 230
7.8.2 函数匹配与实参转换 231
7.8.3 重载确定的三个步骤 232
7.8.4 实参类型转换 234
7.9 指向函数的指针 237
小结 239
术语 240
第8章 标准IO库 243
8.1 面向对象的标准库 244
8.2 条件状态 247
8.3 输出缓冲区的管理 249
8.4 文件的输入和输出 251
8.4.1 文件流对象的使用 251
8.4.2 文件模式 254
8.4.3 一个打开并检查输入文件的
程序 256
8.5 字符串流 257
小结 259
术语 259
第二部分 容器和算法
第9章 顺序容器 263
9.1 顺序容器的定义 264
9.1.1 容器元素的初始化 265
9.1.2 容器内元素的类型约束 267
9.2 迭代器和迭代器范围 268
9.2.1 迭代器范围 270
9.2.2 使迭代器失效的容器操作 271
9.3 顺序容器的操作 272
9.3.1 容器定义的类型别名 272
9.3.2 begin和end成员 273
9.3.3 在顺序容器中添加元素 273
9.3.4 关系操作符 277
9.3.5 容器大小的操作 278
9.3.6 访问元素 279
9.3.7 删除元素 280
9.3.8 赋值与swap 282
9.4 vector容器的自增长 284
9.5 容器的选用 287
9.6 再谈string类型 289
9.6.1 构造string对象的其他方法 290
9.6.2 修改string对象的其他方法 292
9.6.3 只适用于string类型的操作 293
9.6.4 string类型的查找操作 295
9.6.5 string对象的比较 298
9.7 容器适配器 300
9.7.1 栈适配器 301
9.7.2 队列和优先级队列 302
小结 303
术语 303
第10章 关联容器 305
10.1 引言:pair类型 306
10.2 关联容器 308
10.3
map
类型 309
10.3.1
map
对象的定义 309
10.3.2
map
定义的类型 310
10.3.3 给
map
添加元素 311
10.3.4 使用下标访问
map
对象 311
10.3.5
map
::insert的使用 313
10.3.6 查找并读取
map
中的元素 315
10.3.7 从
map
对象中删除元素 316
10.3.8
map
对象的迭代遍历 316
10.3.9 “单词转换”
map
对象 317
10.4 set类型 319
10.4.1 set容器的定义和使用 319
10.4.2 创建“单词排除”集 321
10.5 multi
map
和multiset类型 322
10.5.1 元素的添加和删除 322
10.5.2 在multi
map
和multiset
中查找元素 323
10.6 容器的综合应用:文本查询程序 325
10.6.1 查询程序的设计 326
10.6.2 TextQuery类 327
10.6.3 TextQuery类的使用 328
10.6.4 编写成员函数 330
小结 332
术语 332
第11章 泛型算法 335
11.1 概述 336
11.2 初窥算法 339
11.2.1 只读算法 339
11.2.2 写容器元素的算法 341
11.2.3 对容器元素重新排序的算法 343
11.3 再谈迭代器 347
11.3.1 插入迭代器 348
11.3.2 iostream迭代器 349
11.3.3 反向迭代器 353
11.3.4 const迭代器 355
11.3.5 五种迭代器 356
11.4 泛型算法的结构 358
11.4.1 算法的形参模式 359
11.4.2 算法的命名规范 359
11.5 容器特有的算法 361
小结 362
术语 363
第三部分 类和数据抽象
第12章 类 367
12.1 类的定义和声明 368
12.1.1 类定义:扼要重述 368
12.1.2 数据抽象和封装 369
12.1.3 关于类定义的更多内容 372
12.1.4 类声明与类定义 374
12.1.5 类对象 375
12.2 隐含的this指针 376
12.3 类作用域 380
类作用域中的名字查找 382
12.4 构造函数 385
12.4.1 构造函数初始化式 387
12.4.2 默认实参与构造函数 391
12.4.3 默认构造函数 392
12.4.4 隐式类类型转换 393
12.4.5 类成员的显式初始化 396
12.5 友元 396
12.6 static类成员 398
12.6.1 static成员函数 400
12.6.2 static数据成员 400
小结 403
术语 403
第13章 复制控制 405
13.1 复制构造函数 406
13.1.1 合成的复制构造函数 409
13.1.2 定义自己的复制构造函数 409
13.1.3 禁止复制 410
13.2 赋值操作符 411
13.3 析构函数 412
13.4 消息处理示例 415
13.5 管理指针成员 419
13.5.1 定义智能指针类 421
13.5.2 定义值型类 425
小结 427
术语 427
第14章 重载操作符与转换 429
14.1 重载操作符的定义 430
14.2 输入和输出操作符 435
14.2.1 输出操作符<>的重载 437
14.3 算术操作符和关系操作符 439
14.3.1 相等操作符 440
14.3.2 关系操作符 441
14.4 赋值操作符 441
14.5 下标操作符 442
14.6 成员访问操作符 443
14.7 自增操作符和自减操作符 446
14.8 调用操作符和函数对象 449
14.8.1 将函数对象用于标准库算法 450
14.8.2 标准库定义的函数对象 451
14.8.3 函数对象的函数适配器 453
14.9 转换与类类型 454
14.9.1 转换为什么有用 454
14.9.2 转换操作符 455
14.9.3 实参匹配和转换 458
14.9.4 重载确定和类的实参 461
14.9.5 重载、转换和操作符 464
小结 466
术语 467
第四部分 面向对象编程与泛型编程
第15章 面向对象编程 471
15.1 面向对象编程:概述 472
15.2 定义基类和派生类 473
15.2.1 定义基类 474
15.2.2 protected成员 475
15.2.3 派生类 476
15.2.4 virtual与其他成员函数 479
15.2.5 公用、私有和受保护的继承 482
15.2.6 友元关系与继承 486
15.2.7 继承与静态成员 486
15.3 转换与继承 487
15.3.1 派生类到基类的转换 487
15.3.2 基类到派生类的转换 489
15.4 构造函数和复制控制 490
15.4.1 基类构造函数和复制控制 490
15.4.2 派生类构造函数 490
15.4.3 复制控制和继承 494
15.4.4 虚析构函数 495
15.4.5 构造函数和析构函数中的虚函数 497
15.5 继承情况下的类作用域 497
15.5.1 名字查找在编译时发生 498
15.5.2 名字冲突与继承 498
15.5.3 作用域与成员函数 499
15.5.4 虚函数与作用域 500
15.6 纯虚函数 502
15.7 容器与继承 503
15.8 句柄类与继承 504
15.8.1 指针型句柄 505
15.8.2 复制未知类型 507
15.8.3 句柄的使用 508
15.9 再谈文本查询示例 511
15.9.1 面向对象的解决方案 513
15.9.2 值型句柄 514
15.9.3 Query_base类 515
15.9.4 Query句柄类 516
15.9.5 派生类 518
15.9.6 eval函数 520
小结 522
术语 523
第16章 模板与泛型编程 525
16.1 模板定义 526
16.1.1 定义函数模板 526
16.1.2 定义类模板 528
16.1.3 模板形参 529
16.1.4 模板类型形参 531
16.1.5 非类型模板形参 533
16.1.6 编写泛型程序 534
16.2 实例化 535
16.2.1 模板实参推断 537
16.2.2 函数模板的显式实参 540
16.3 模板编译模型 542
16.4 类模板成员 545
16.4.1 类模板成员函数 548
16.4.2 非类型形参的模板实参 551
16.4.3 类模板中的友元声明 552
16.4.4 Queue和QueueItem的友元
声明 554
16.4.5 成员模板 556
16.4.6 完整的Queue类 558
16.4.7 类模板的static成员 559
16.5 一个泛型句柄类 560
16.5.1 定义句柄类 561
16.5.2 使用句柄 562
16.6 模板特化 564
16.6.1 函数模板的特化 565
16.6.2 类模板的特化 567
16.6.3 特化成员而不特化类 569
16.6.4 类模板的部分特化 570
16.7 重载与函数模板 570
小结 573
术语 574
第五部分 高级主题
第17章 用于大型程序的工具 579
17.1 异常处理 580
17.1.1 抛出类类型的异常 581
17.1.2 栈展开 582
17.1.3 捕获异常 583
17.1.4 重新抛出 585
17.1.5 捕获所有异常的处理代码 586
17.1.6 函数测试块与构造函数 586
17.1.7 异常类层次 587
17.1.8 自动资源释放 589
17.1.9 auto_ptr类 591
17.1.10 异常说明 595
17.1.11 函数指针的异常说明 598
17.2 命名空间 599
17.2.1 命名空间的定义 599
17.2.2 嵌套命名空间 603
17.2.3 未命名的命名空间 604
17.2.4 命名空间成员的使用 606
17.2.5 类、命名空间和作用域 609
17.2.6 重载与命名空间 612
17.2.7 命名空间与模板 614
17.3 多重继承与虚继承 614
17.3.1 多重继承 615
17.3.2 转换与多个基类 617
17.3.3 多重继承派生类的复制控制 619
17.3.4 多重继承下的类作用域 620
17.3.5 虚继承 622
17.3.6 虚基类的声明 624
17.3.7 特殊的初始化语义 625
小结 628
术语 628
第18章 特殊工具与技术 631
18.1 优化内存分配 632
18.1.1
C++
中的内存分配 632
18.1.2 allocator类 633
18.1.3 operator new函数和
operator delete函数 636
18.1.4 定位new表达式 638
18.1.5 显式析构函数的调用 639
18.1.6 类特定的new和delete 639
18.1.7 一个内存分配器基类 641
18.2 运行时类型识别 646
18.2.1 dynamic_cast操作符 647
18.2.2 typeid操作符 649
18.2.3 RTTI的使用 650
18.2.4 type_info类 652
18.3 类成员的指针 653
18.3.1 声明成员指针 653
18.3.2 使用类成员的指针 655
18.4 嵌套类 658
18.4.1 嵌套类的实现 658
18.4.2 嵌套类作用域中的名字查找 661
18.5 联合:节省空间的类 662
18.6 局部类 665
18.7 固有的不可移植的特征 666
18.7.1 位域 666
18.7.2 volatile限定符 668
18.7.3 链接指示:extern "C" 669
小结 672
术语 673
附录 标准库 675
索引 703
t.insert(std::make_pair(1, "a"));
t.insert(std::make_pair(2, "b"));
t.insert(std::make_pair(3, "c"));
t.insert(std::make_pair(4, "d"));
根据key 找 value
std::string s = ""
# include < stringtools>
using namespace str ;
std::string text = format( " hello %s " )( " world " );
std::vector<std> v = split( " , " )( " hello, world " );
std::string hw = join( " " )(v);
print ( " abc: " , 1 , 2 , 3 );
// abc: 1 2 3
std::
map
<std>,std::vector< int>> m{
{{ " one " , true },{ 1 }},
{{ " two " , 0
关联容器可以按照不同的特性分类,底层是
map
或者set。根据能否有重复的关键字可以加上muti,根据是否按顺序保存可以加上unordered_。
关联容器也是模板,在创建对象时,需要指明元素类型。
1.1 定义关联容器
每个关联容器都定义了一个默认构造函数,它创建一个指定类型的空容器。
除此以外,还能用另一个同类型的关联容器的拷贝来初始化。或者用值范围来初始化。
map
类型中,第一个元素为关键字,第二个元素
auto it = my
Map
.find("orange");
if (it != my
Map
.end()) {
std::cout << it->first << ": " << it->second << std::endl;
可以使用[]运算符访问键所对应的值:
```
c++
std::cout << my
Map
["orange"] << std::endl;
注意,如果访问不存在的键,则会创建一个新的键,并将其值初始化为类型的默认值。
6. 遍历元素
可以使用迭代器遍历
map
容器中的元素:
```
c++
for (auto it = my
Map
.begin(); it != my
Map
.end(); ++it) {
std::cout << it->first << ": " << it->second << std::endl;
7. 判断元素是否存在
可以使用count函数判断指定键的元素是否存在,如果存在,则返回1;如果不存在,则返回0:
```
c++
if (my
Map
.count("orange") > 0) {
std::cout << "orange exists" << std::endl;
以上就是关于
map
容器的详细使用说明。需要注意的是,在处理大量数据时,
map
容器的效率可能会比较低,因为
map
容器是基于红黑树实现的,插入、查找、删除等操作的时间复杂度是O(logn)。如果需要处理大量数据,并且对时间性能有很高的要求,可以考虑使用unordered_
map
容器,它是基于哈希表实现的,插入、查找、删除等操作的时间复杂度是O(1)。