C++标准库与Java基础类对照表

一、集合类
对象的集合,指如链表,数组,队列这一类的数据结构。在C++标准库中把这些成为Container, 在Java中称为Collection。
C++STL常用Container: vector, list, map, set, queue, stack, priority_queue
Java基础类:ArrayList, HashMap, HashSet
注意:
在C++中采用了模板适应各种类型。Java中没有模板,由于各个对象都是派生自Object类, 元素会自动向上转换。Java的这种机制可能会引起一些非法的类型转换,从而导致程序错误。当从Java的Collection取对象时,返回的是Object对象,因此需要程序员进行显式的向下转换。另外,Java的Collection不支持基本类型,解决办法是利用基本包装类(如Integer, Float, Double等)。
在JDK 5.0中加入了泛型类型,形式上有点像C++的模板,例如定义ArrayList<String> v, 这种的语法清晰地显示了v是存放String的容器。Java的泛型编程超出本文范围,请参阅相关资料。 考虑到兼容性的问题,本文对Collection的定义没有采用泛型的形式。
vector与ArrayList
C++
Java
定义
vector<int> vTest(50)
ArrayList vTest = new ArrayList()
追加
int x = 5;
vTest.push_back( x )
Integer x = new Interger(5)
vTest.add( x )
元素个数
vTest.size()
vTest.size()
判断空
vTest.empty() // TRUE为空
vTest.isEmpty()
插入
vector<int>::iterator iter;
int y = 15;
iter = vTest.begin();
vTest.insert(iter+4, y)
int y = 15;
vTest.add( 5, y)
删除
vTest.erase( vTest.begin() )
vTest.remove(5)
迭代
vector<int>::iterator iter;
iter = vTest.begin();
int xx = 0;
while( iter != vTest.end() )
{
 xx = *iter;
 iter++;
}
iterator it = vTest.iterator(); //取得第一个
while( it.hasNext() )
{
   Integer xx = (Integer) it.next();  //向下转换
}
获取
vTest[i]
 vTest.at(i)
读取 vTest.get(i)
写入 vTest.set(i, new Integer(15));
清空
vTest.clear()
vTest.clear()
list与LinkedList
     双向链表。
map与HashMap
        C++ STL中的map一般是用红黑树(RB-Tree)实现,Java的HashMap多用散列(hash)的方法实现。
Java的HashMap一般都要重载equals()和hashCode()方法 。
  
C++
Java
定义
map<string, int> mapTest
HashMap mapTest = new HashMap()
插入
mapTest[ string(“hello”) ] = 1;
或者
typedef map<string,int>::value_type valType;
string str = “hello”;
mapTest.insert(valType(str, 1));
 
mapTest.put(“hello”, new Integer(1) );
查找
mapTest.count(“hello”) 判断个数
map<string,int>::iterator it;
it = mapTest.find(“hello”);
int x = (*it).second;
 
判断存在:
   mapTest.containsKey()
获取
Integer x = (Integer)mapTest.get(“hello”)
 
二、算法
    下面讲述的C++的泛型算法只适用于随机访问的容器,如数组,vector等。对List和Map不使用。List有自己一套算法方法。
C++
Java
定义
vector<string> vec; //假设已插入数据
vector<string>::iterator it;
ArrayList vec = new ArrayList(); //假设已插入数据
Iterator it = vec.iterator();
排序
sort(vec.begin(), vec.end())
Collections.sort(vec);
查找
find(vec.begin(), vec.end(), “hello”)
 
二分查找:
int pos = Collections.binarySearch(vec, “hello”);
复制
int ia[] = {1,2,3,4,5}
vector<int> vec;
copy(ia, ia+5, back_inserter(vec));
 
三、字符串
    C++采用string类,Java采用String类。java的String类一经初始化就不能改变,每次增加或删除字符时会构建一个新的String类,在频繁改变操作中会大量内存耗费。可变的String应采用StringBuffer类。
C++
Java
定义
string str = “cpp string”;
string str(“hello”);
转换为C风格字符串
str.c_str();
String str = “java string”
追加
str = str + “world”;
str.append(“world”);
str = “hello” + “world”;
str.concat(“world”);
长度
str.length()
str.length();
比较
str.compare(otherstr);
判断相等
str == otherstr
str.CompareTo(otherstr);
判断相等:
str.equals(otherstr);
正则表达式匹配
str.matches(“^#(.)+$”);
子串
str.substr(5,6) //5个字符,长度6
str.substring(5,8) //5到第8个字符
分割:
String str = “CHN,JPN,RUS”;
String vecstr[];
vecstr = str.split(“,”);
结果为String数组
“CHN”, “JPN”, “RUS”
查找
int idx = str.find(“cpp”);
if( idx != string::npos ) {
 ... ... //找到位置
}
查找第一个出现0~9字符的位置
int idx = find_first_of(str, “1234567890”);
int idx = str.indexOf(“cpp”);
if( idx != -1) {
 .. ...
}
清空
str.clear()
str.clear()


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

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

相关文章

ASP.NET MVC 在控制器中获取某个视图动态的HTML代码

如果我们需要动态的用AJAX从服务器端获取HTML代码&#xff0c;拼接字符串是一种不好的方式&#xff0c;所以我们将HTML代码写在cshtml文件中&#xff0c;然后通过代码传入model&#xff0c;动态获取cshtml中的HTML代码 当然&#xff0c;我们想要使用通用的方法去获取cshtml&…

SharePoint 2013 处理videoplayerpage.aspx下的个人图片显示有误问题

问题&#xff1a;Personal sites photo cant correct display in the videos pageThe url address of personal sites photo is exist surplus characters. The correct situation is just the characters of "%20", not the characters of "%2520".解决方…

Python学习笔记(一)

1.python语言的优点&#xff1a;(1)是一种高级语言&#xff0c;提供大量的库和内置数据结构(2)书写简洁优美 缺点:是解释性语言&#xff0c;执行速度较慢 2.从官方网站下载的python解释器为CPython,是一种用C语言编写的python解释器。在命令行如果启动python3&#xff0c;输入p…

汇编语言基本概念汇总

汇编语言应该是我们如今学的最“低级”的语言了&#xff0c;由于如今不会再有人去学机器语言了。而汇编语言还在一些硬件或者嵌入式设备上使用并开发着。下面资料是为了大学的汇编考试整理的资料&#xff0c;如今与大家分享&#xff0c;希望能给大家提供帮助。 汇编语言程序设计…

MySQL找出锁等待

1.服务器级别的锁等待可以通过show processlist看到等待锁的线程id&#xff0c;但是无法知道究竟哪个线程持有锁可以通过mysqladmin debug相关等待锁的线程以及谁持有锁可以在错误日志中找到2.存储引擎层的锁等待则比较麻烦&#xff0c;以下是innodb存储引擎中锁等待以及哪个线…

C++给函数传数组参数C++给函数传数组参数

C给函数传数组参数 在C中&#xff0c;如果要给一个函数传入一个数组&#xff0c;一般都是传入两个参数一个数组指针和一个数组大小 例&#xff1a; void print_1 (int n, int *datas ) { for (int i 0; i < n; i) { std::cout << datas[i] <<…

clover引导mbr安装黑苹果_安装黑苹果记录(一)

从来没有接触过macOS(苹果系统)&#xff0c;孩子说他用的那台电脑linux不能安装一些软件&#xff0c;问我能不能安装黑苹果&#xff0c;一些软件只有win和mac的客户端&#xff0c;却没有linux版本。他知道我不会给他安装Windows&#xff0c;一个是怕他玩游戏&#xff0c;另外一…

人口变动的经济分析

佳木斯市人口变动的经济分析上 人口生产和物质生产&#xff0c;是有史以来人类社会同时存在和同步发展的两种生产&#xff0c;一切经济变动都与人口变动有直接或间接的关系&#xff0c;而一切人口变动又可以从经济变动中找到原因。为此&#xff0c;本文试根据我国、我省和我市第…

【javascript】操作符:一元操作符

一、一元操作符 <script>// var num1,num2,num3; num11;num22; alert(num1num2);//4 在前 alert(num1num2);//4 num11; alert(num1--num2);//3 num1NaN; alert(num1num2);//NaN num1true; alert(num1num2);//3 true转化成了1 num1fal…

doxygen问题集锦

使用doxygen排版数学公式出错的解决方法 参考&#xff1a;http://blog.csdn.net/huangbo10/article/details/46801949 问题 今天玩了一下doxygen&#xff0c;碰到一个问题 ! Undefined control sequence. l.77 $ y_{\mbox{test}} \mathbb{E}[y_{\mbox{train}}] x $ ? !…

ubuntu中make头文件找不到_和平精英:游戏中找不到人怎么办?这些技巧帮你练出“火眼金睛”...

大家好&#xff0c;欢迎来到《刺激实战教室》&#xff0c;我是你们的老朋友刺激哥。俗话说&#xff0c;电子竞技不需要视力&#xff0c;而这句话也是《和平精英》的一个“痛点”。在《和平精英》这款游戏中&#xff0c;更是如此。在很多时候&#xff0c;敌人就藏在我们的附近&a…

[CDA数据分析师学习之路] 【CDA就业班独家发布】学习之路

http://bbs.pinggu.org/thread-4677737-1-1.html转载于:https://blog.51cto.com/xbh1314/1923452

jdk8永久代从方法区移除的验证

/*** 测试使用jdk8中是否仍然可以使用永久代* jvm options * -Xms20m -Xmx20m -Xmn10m -XX:PermSize10m -XX:MaxPermSize10m -XX:PrintGCDetails* * 结果运行提示&#xff1a;* Java HotSpot(TM) Client VM warning: ignoring option PermSize10m; support was removed in 8.0*…

eureka配置_F版本SpringCloud 5—Eureka集群和自我保护机制

源码地址&#xff1a;https://gitee.com/bingqilinpeishenme/Java-Tutorials前言上篇文章中&#xff0c;通过代码搭建了Eureka注册中心和客户端&#xff0c;是Eureka的简单应用&#xff0c;在本文中将会讲解更多关于Eureka服务端的应用以及原理。Eureka 自我保护机制进入自我保…

windows共享内存

在windows编程中避免不了使用共享内存&#xff0c;因为他是进程间通信、文件读取最简单的方式&#xff0c;有书上还说其他进程间通讯机制如管、油槽、WM_COPYDATA底层也是用的共享内存机制。关于使用方法还是请参考MSDN。 最近听说使用共享内存不安全&#xff0c;可能会被其他进…

Chrome指令/追踪Http请求相关

2019独角兽企业重金招聘Python工程师标准>>> Chrome HTTP抓包&#xff0c;在地址栏输入 chrome://net-internals/#requests转载于:https://my.oschina.net/u/2292141/blog/895603

离散卷积与自相关

本文章转载自&#xff1a;http://www.cnblogs.com/einyboy/archive/2012/12/30/2839633.html 一、 定义 离散信号f(n),g(n)的定义如下&#xff1a; N-----为信号f(n)的长度 s(n)----为卷积结果序列,长度为len(f(n))len(g(n))-1 例&#xff1a; f(n) [1 2 3]; g(n) [2 3 1]; …

PHP文件操作类

<?php /*************************************************************************************** 文件名&#xff1a;File.cls.php 文件简介&#xff1a;类clsFile的定义&#xff0c;对文件操作的封装 版本&#xff1a;2.0 最后修改日期&#xff1a;2011-8-23 *******…

excel打开后灰色不显示内容_Excel二维表转换,一分钟就够

点击蓝字关注我们44个Excel 使用技巧基本方法作为职场人&#xff0c;加班累如狗。如何更轻松的工作并获得喜人的报酬便是咱们职场人一直追求的“生活哲理”&#xff0c;说到Excel,对于办公室群体而言实在是太常见不过了&#xff0c;不管做什么&#xff0c;咱们都会跟它打交道&a…

利用PHP SOAP实现web service

一 什么是SOAP&#xff1f;可以做什么&#xff1f; SOAP 指简单对象访问协议&#xff0c;它是一种基于XML的消息通讯格式&#xff0c;用于网络上&#xff0c;不同平台&#xff0c;不同语言的应用程序间的通讯。可自定义&#xff0c;易于扩展。一条 SOAP 消息就是一个普通的 XML…