如何在C++实现动态数组?

jlu3389 2008-03-30 08:26:41
int* Array[10]; <---已经写死了

怎么改变Array的大小?
变成Array[20];?
...全文
1869 48 打赏 收藏 举报
写回复
48 条回复
切换为时间正序
请发表友善的回复…
发表回复
skyful123 2008-04-03
  • 打赏
  • 举报
回复
顶一下 用stl
barenx 2008-04-01
  • 打赏
  • 举报
回复
使用 STL
alwaysLonely 2008-04-01
  • 打赏
  • 举报
回复
为什么用Vector为要改造那么代码呢?数组的操作Vector都支持的吧```而且一样是连续的存储,就算有什么特殊的应用也一样能满足的吧.

自己写一个数组的包装类跟直接使用Vector也没什么区别.

问题的关键是,你定义了一个需要到处引用的数组,你在引用它的时候因为不能改变大小而郁闷,抛开你的具体问题不谈,就我在上两句描述的问题而言,最快的方法就是换个新的类了...至于会麻烦去改代码...想让马儿跑,还不让马吃草,是不行地...
showyfish 2008-04-01
  • 打赏
  • 举报
回复
自己new
STL和BOOST里的容器也行嘛
tubo_true 2008-04-01
  • 打赏
  • 举报
回复
CStringArray
vector
我觉得很好
ascent2006 2008-03-31
  • 打赏
  • 举报
回复
学习之.
pengzhixi 2008-03-31
  • 打赏
  • 举报
回复
用vector吧,比用数组好些。
lsmdiao0812 2008-03-31
  • 打赏
  • 举报
回复
看对你有没有用

#define Malloc(count,type) (type *)malloc(sizeof(type)*(count))

typedef struct A{
int *a;
int size;
int count;
}Arr;

void Init(Arr *arr)//初始话
{
arr->count=-1;
scanf("%d",&arr->size);

assert(arr->size>0);

arr->a=Malloc(arr->size,int);
if(arr->a==NULL)
{
printf("malloc error!");
}

printf("malloc ok!");
}

void Add(Arr *arr,const int &data)//添加
{
if(arr->count+1>=arr->size)//内存不足
{
int RealSize=arr->size*(sizeof(int))+2*(sizeof(int));
realloc(arr->a,RealSize);
arr->size+=2;
}

arr->count++;
arr->a[arr->count]=data;
}

void Print(Arr arr)
{
for(int i=0;i<=arr.count;i++)
{
printf("%d-",arr.a[i]);
}
}

void Destory(Arr arr)
{
if(arr.a!=NULL)
free(arr.a);
}

int main(array<System::String ^> ^args)
{
Arr arr;

Init(&arr);

printf("Add");

Add(&arr,4);
Add(&arr,5);
Add(&arr,1);
Add(&arr,3);
Add(&arr,8);

printf("Print");
Print(arr);

Destory(arr);

getchar();
getchar();
return 1;
}

babyofbaby 2008-03-31
  • 打赏
  • 举报
回复
用VECTOR,LIST,或者自己写一个数组类。
loongee 2008-03-31
  • 打赏
  • 举报
回复
个人认为可能没办法了……

以后还是把这种固定性的东西写在const里面比较好。毕竟虽然客户需求可能暂时可以确定,但是不要忘了考虑以后的软件升级及后续服务才好。

吃一堑长一智吧。
xkyx_cn 2008-03-31
  • 打赏
  • 举报
回复
mark
hxxwcc 2008-03-31
  • 打赏
  • 举报
回复
用std::vector,反正是c++嘛..
Cf251seuSuzsoft 2008-03-31
  • 打赏
  • 举报
回复
看看stl
zywfriend 2008-03-31
  • 打赏
  • 举报
回复
晕乎.这么一大群人.看不出问题
scq2099yt 2008-03-31
  • 打赏
  • 举报
回复
定义几个这样的数组
paulbin 2008-03-31
  • 打赏
  • 举报
回复
// constructing vectors
#include <iostream>
#include <vector>
using namespace std;

int main ()
{
unsigned int i;

// constructors used in the same order as described above:
vector<int> first; // empty vector of ints
vector<int> second (4,100); // four ints with value 100
vector<int> third (second.begin(),second.end()); // iterating through second
vector<int> fourth (third); // a copy of third

// the iterator constructor can also be used to construct from arrays:
int myints[] = {16,2,77,29};
vector<int> fifth (myints, myints + sizeof(myints) / sizeof(int) );

cout << "The contents of fifth are:";
for (i=0; i < fifth.size(); i++)
cout << " " << fifth[i];

cout << endl;

return 0;
}
sheenl 2008-03-31
  • 打赏
  • 举报
回复
一般说来, 用静态数组比用动态数组好
liveforme 2008-03-31
  • 打赏
  • 举报
回复
int * Array = NULL;
Array = new int[10];
delete[] Array;
Array = new int[20];
...
chen_yuan 2008-03-31
  • 打赏
  • 举报
回复
用vector是最方便的了
chen_yuan 2008-03-31
  • 打赏
  • 举报
回复

int *array = new int[10];
int *arraynew = new int[20];
int count = 20;
int *dest,*src;
dest = arraynew;
src = array;
while(count--)
{
*dest++ = *src++;
}
delete []array;
array = arraynew;
加载更多回复(28)
相关推荐
发帖
C++ 语言

6.3w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
帖子事件
创建了帖子
2008-03-30 08:26
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下