一个关于java代码和c++代码的比较有关问题~请问~将下面代码转化为c++(用指针实现)
一个关于java代码和c++代码的比较问题~请教~将下面代码转化为c++(用指针实现)
最近在做一个项目,用java开发~其中让我想到了c++指针的魅力~可以说用c++来实现这段逻辑的话肯定是可以的~但c++基础有些遗忘,还恳请高手帮忙转换为c++代码~~
java代码如下:
public List test_ListCheck(List list, int check_id, float _p,String _n) {
for (int i = 0; i < list.size(); i++) {
int j = ((IdSumPriceNameDTO) list.get(i)).getId();
// 将list_sumId的第i个元素++
int k = ((IdSumPriceNameDTO) list.get(i)).getSum();
if (j == check_id) {
k++;
list.remove(i);
IdSumPriceNameDTO idSumDTO = new IdSumPriceNameDTO(j, k, _p,_n);
list.add(i, idSumDTO);
}
}
return list;
}
IdSumPriceNameDTO类是一个javabean,其中有四个属性:id,sum,price,name
因为java没有指针的概念,所以每次比较相等的情况时,要先k++,然后remove掉整个元素,最后再重新创建一个idSumDTO 对象,再将其add到list容器中去~~~
但如果用c++ 的话,这里就可以直接用指针进行对((IdSumPriceNameDTO) list.get(i)).getSum()进行++操作~~~~~~~这样肯定是可以实现的~~~~
所以请高手们帮忙用c++代码实现一下我上面的那段java代码~!!!谢谢!!!在线等哦~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
------解决方案--------------------
class IdSumPriceNameDTO //IdSumPriceNameDTO类
{
private: //数据成员
int id ;
int sum ;
public://函数成员
int getId() ;
int getSum() ;
};
class List //List类
{
public: //函数成员
int size() ;
List get( int ) ;
List test_ListCheck(List list, int check_id, float _p,String _n) ;
} ;
//函数成员实现
List List::test_ListCheck(List , int , float , String )
{//开辟一段栈空间,用idSumDTO指针指向这段栈空间的起始位置
IdSumPriceNameDTO *idSumDTO = new IdSumPriceNameDTO(j, k, _p,_n);
//如果分配空间失败就退出
if( idSumDTO == NUll )
return ;
for (int i = 0; i < list.size(); i++)
{//调用IdSumPriceNameDTO类的成员函数
int j = idSumDTO-> getId();
// 将list_sumId的第i个元素++
int k = idSumDTO-> getSum();
if (j == check_id)
{
k++;
list.remove(i);
IdSumPriceNameDTO *idSumDTO = new IdSumPriceNameDTO(j, k, _p,_n);
list.add(i, idSumDTO);
}
}
return list ;
}
最近在做一个项目,用java开发~其中让我想到了c++指针的魅力~可以说用c++来实现这段逻辑的话肯定是可以的~但c++基础有些遗忘,还恳请高手帮忙转换为c++代码~~
java代码如下:
public List test_ListCheck(List list, int check_id, float _p,String _n) {
for (int i = 0; i < list.size(); i++) {
int j = ((IdSumPriceNameDTO) list.get(i)).getId();
// 将list_sumId的第i个元素++
int k = ((IdSumPriceNameDTO) list.get(i)).getSum();
if (j == check_id) {
k++;
list.remove(i);
IdSumPriceNameDTO idSumDTO = new IdSumPriceNameDTO(j, k, _p,_n);
list.add(i, idSumDTO);
}
}
return list;
}
IdSumPriceNameDTO类是一个javabean,其中有四个属性:id,sum,price,name
因为java没有指针的概念,所以每次比较相等的情况时,要先k++,然后remove掉整个元素,最后再重新创建一个idSumDTO 对象,再将其add到list容器中去~~~
但如果用c++ 的话,这里就可以直接用指针进行对((IdSumPriceNameDTO) list.get(i)).getSum()进行++操作~~~~~~~这样肯定是可以实现的~~~~
所以请高手们帮忙用c++代码实现一下我上面的那段java代码~!!!谢谢!!!在线等哦~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
------解决方案--------------------
class IdSumPriceNameDTO //IdSumPriceNameDTO类
{
private: //数据成员
int id ;
int sum ;
public://函数成员
int getId() ;
int getSum() ;
};
class List //List类
{
public: //函数成员
int size() ;
List get( int ) ;
List test_ListCheck(List list, int check_id, float _p,String _n) ;
} ;
//函数成员实现
List List::test_ListCheck(List , int , float , String )
{//开辟一段栈空间,用idSumDTO指针指向这段栈空间的起始位置
IdSumPriceNameDTO *idSumDTO = new IdSumPriceNameDTO(j, k, _p,_n);
//如果分配空间失败就退出
if( idSumDTO == NUll )
return ;
for (int i = 0; i < list.size(); i++)
{//调用IdSumPriceNameDTO类的成员函数
int j = idSumDTO-> getId();
// 将list_sumId的第i个元素++
int k = idSumDTO-> getSum();
if (j == check_id)
{
k++;
list.remove(i);
IdSumPriceNameDTO *idSumDTO = new IdSumPriceNameDTO(j, k, _p,_n);
list.add(i, idSumDTO);
}
}
return list ;
}