c++数组删除指定元素
1、打开Delphi7集成开发环境,在默认工程的Form1窗体放一个Button1按钮和一个Memo1控件。
2、在Unit1.pas源代码文件的implementation定义一个字符串类型动态数组类型,并声明这种类型的一个变量。
3、在Form1的OnCreare事件方法,写如下代码:procedure TForm1.FormCreate(Sender: TObject);var i:integer;begin。
4、在Unit1.pas源代码的implementation中定义一个删除动态数组指定元素的过程。
5、双击Button1按钮进入OnClick事件方法。
6、F9运行程序,Memo1显示字符串动态数组内容。
7、点击Button1删除了指定第二个元素,成功。
//浮点数型数组(以double型数组为例)
intremoveGivenValue(double*pArray,constintnLen,constdoublelfGivenValue)
{
if(pArray==NULL||nLen<1)
return0;
intnValidLen=0;
for(inti=0;i<nLen;++i)
{
if(fabs(pArray[i]-lfGivenValue)<0.000001)
continue;
pArray[nValidLen++]=pArray[i];
}
returnnValidLen;
}
//整型数组
intremoveGivenValue(int*pArray,constintnLen,constintnGivenValue)
{
if(pArray==NULL||nLen<1)
return0;
intnValidLen=0;
for(inti=0;i<nLen;++i)
{
if(pArray[i]==nGivenValue)
continue;
pArray[nValidLen++]=pArray[i];
}
returnnValidLen;
}
扩展资料
C++数组指针用法
将a理解为指向数组头的一个指针,这样就好理解了。理解了之后确实好像豁然开朗的样子。这样a[5]就等于*(a+5),也就相当于将数组头指针向后推5个位置,然后取到该位置的数据了。
#include<iostream>
#include<typeinfo>
usingnamespacestd;
#definetype(a)typeid(a).name()
intmain(){
inta[10]={1,2,3,4,5,6,7,8,9,10};
cout<<"a="<<a<<"&a="<<&a<<endl;
int*p1=(int*)(&a+1);
int*p2=(int*)(a+1);
cout<<"*(p1-1)="<<*(p1-1)<<"*(p2-1)="<<*(p2-1)<<endl;
cout<<"sizeof(a)="<<sizeof(a)<<"sizeof(&a)="<<sizeof(&a)<<endl;
cout<<"TypeOf(a)="<<type(a)<<"TypeOf(&a)="<<type(&a)<<endl;
}
int n,i,m;
int *p=new int[20]; ///申请内存20*4个字节
cout<<"输入数组长度:";
cin>>n;
for(i=0;i<n;i++) ///输入数组元素
cin>>p[i];
for(i=0;i<n;i++)
cout<<p[i]<<" ";
cout<<endl;
cout<<"输入你要删除的元素:";
cin>>m;
for(i=0;i<n;i++) ///删除元素操作
if(p[i]==m)
{
int k=i;
for(i=k;i<n;i++)
p[i]=p[i+1];
n--;
}
for(i=0;i<n;i++) ///输出删除后的数组
cout<<p[i]<<" ";
cout<<endl;
delete[]p; ///释放内存
return 0;
int m;//指定元素
int *array=new int [n];
for(int i=0;i<n;i++)
{
if(array[i]==m)
{
array[i]=array[n-1];
n--;
{
}
不用指针呢
把int *array=new int[n]改成int array [n];就是。
把if(array[i]==m)语句里改成
{
for(int j=i;j<n-1;j++)
{
array[j]=array[j+1];
}
n--
}
这样好点。