C++中实现java的方法(一)

刚刚结束了大一上的计算机课程,由于学校入门的语言是Java,所以我在假期就计划学习一下C++
然而却发现,C++里面的方法丰富度远比Java少的多,尤其是直接和指针打交道,对于Java学了一个学期却几乎很少直接和指针打交道的入门菜鸡真的很难受
所以趁着学校没有开学,假期突发奇想的像把java上的方法移植到C++里面
暂把该工程称为:CAVA
本博客主要用来记录更新和为实现相关内容时候的学习参考
待工程彻底完成的时候会在最后公布整个工程文件的源代码
由于C++全凭我假期自学,之前的编程基础仅限于大一上的半个学期java入门,所以有BUG存在的可能性及方法实现的不安全性。
希望大家可以帮我指出来,我好进行相关修正
本人大一新生,有什么技术错误,还希望可以批评指教。

目录
一、C++中实现java方法

  1. 前言
  2. ArrayList类
  3. List类

更正于2020-2-2 :
由于Boolean类型的问题,现在已经去掉了为布尔类型专门设计的输出方法

截止于2020-2-1

目前本软件实现功能主要是在
ArrayList方法
在开发最早版本时,选择了一种并非十分安全的方法,即在数组越界时候直接替换后面的内存内容,这是由于C++在数组指针越界后没有报错才想到的方法
本次开发完成后,采取了java的方法,即进行1.5倍扩容
使用方法如下:
在主方法里面加入

#include ”ArrayList.cpp”

调用时
ArrarList<泛型名> 自己的命名;
目前已经实现内容:

clone()//复制当前数组,并返回
isEmpty()//返回布尔类型,检测当前是否为空,空返回true
indexOf(Object o)//返回第一个检测到的o的位置,如果没有就返回-1 
add(T t)//在动态数组结尾添加个内容
add(int index, T t)//在index位置加上个内容
size()//返回目前该数组有的数据量,以int形式返回
get(int index)//获取相应位置的数据
remove(Object o)//移除此列表中首次出现的指定元素(如果存在,存在返回true)。
remove(int index)//移除此列表中指定位置上的元素。
toString()//返回当前动态数组的字符串形式,以string形式返回
set(int index, Object o)//设置在index位置的内容为o
clear()//清空当前动态数组
bool contains(Object o) //返回是否含有该内容的布尔类型,含有即为true
trimToSize() //删去多余的数组容量,变成实际容量
replace(Object old, Object newobj)//将原有第一个的old内容换成新的newobj
remove(int start, Object old, Object newobj)//增加了开始区间,其他同上
replaceAll(Object old, Object newobj)//替换全部的old为newobj

相对来说本方法开发完成度较高
使用样例如下

#include <iostream>
#include "ArrayList.cpp"
int main() {
   ArrayList<double> list=ArrayList<double>();
   list.add(2.5);
   list.add(3.5);
   list.add(1,4.5);
   list.remove(2.5);
   cout <<list.size()<<endl;
   print(list);
    return 0;
}

输出为

2
[4.5, 3.5]

为了引入一些改良方法,我在开发时候创建了util.cpp
目前此类方法中只有两个方法
该文件源码如下:

#include <iostream>
#include <string>
using namespace std;
template <class T>
int length(T& t,bool isarr) {
    if (isarr)
    {
        return sizeof(t) / sizeof(*t);//普通数组
    }
    return  _msize(t) / sizeof(*t);//指针数组
}
template <class T>
void print(T t) {
    cout << t.toString();
}

其中
length(T& t,bool isarr)获取一个数组的长度,当为普通的数组(即生成的时候是arr[10])后面的布尔值为true,当为指针数组时(即char)布尔值为false*
print(T t)输出带有toString()方法的类型(如:ArrayList)的内容
length和print都是从java中提取的方法,但是经过改良的方法
所以这里将这种改良方法全部放到util里面

----------------end-------------

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值