c++怎样获取连续的数据
发布网友
发布时间:2024-05-28 23:31
我来回答
共4个回答
热心网友
时间:2024-06-10 17:43
分割开简单,一个for(最小值;最大值)就可以了,但是a数组要动态的话,会用容器吗‘不会就要先for一次得到数组个数,然后new以后再for一次
#include <vector>
#include <iostream>
using namespace std;
struct Array
{//这里只是取了begin和end,反正是连续的,节约内存,用的时候加数字就是了,还可以写个函数在里面加,像数组一样,甚至重载操作符,当然也可以new来分配大小,感觉没必要了
int begin;
int end;
};
void main()
{
int a[]={1,2,3,4,6,7,8,10,11,12,15,16,33};
vector<Array> aVector ;
int size =sizeof(a)/sizeof(int);
Array aa={0};
for (int i = 0; i < size; ++i) {
aa.begin = a[i];
while(i < size-1 && a[i+1] == a[i] +1)
i++;
aa.end = a[i];
aVector.push_back(aa);
}
//输出,这里也可以for(int i=0;i<aVector.size();i++)然后.at取出来,效率问题,还可以用foreach
for (vector<Array>::iterator iter = aVector.begin(); iter != aVector.end(); iter++) {
for (int i= iter->begin; i <= iter->end; ++i) {
cout<<i<<" ";
}
cout<<endl;
}
}
热心网友
时间:2024-06-10 17:40
方法一:
用memcpy,计算好大小,可以得到一份数据拷贝,随便修改不影响a[]中数据;
方法二:
a0 = a;
a1 = a + 4;
a2 = a + 7;
这样改动a0、a1、a2中数据时,a中数据会被修改。
热心网友
时间:2024-06-10 17:42
用for循环?
int a0[], a1[],a2[];
for(int i=0;i<4;i++) a0[i]=a[i]
for(int j=0;j<3;j++) a1[j]=a[j+i]
for(int k=0;k<3;k++) a2[k]=a[k+i+j]
热心网友
时间:2024-06-10 17:38
int i,j,a0[4], a1[3],a2[3];
for(i=0,j=0;i<4;i++,j++)
a0[j]=a[i];
for(i=4,j=0;j<7;i++,j++)
a1[j]=a[i];
for(i=7,j=0;i<10;i++,j++)
a2[j]=a[i]