DaniWeb IT Discussion Community

DaniWeb IT Discussion Community (http://www.daniweb.com/forums/index.php)
-   C++ (http://www.daniweb.com/forums/forum8.html)
-   -   Allocating an array of objects ? (http://www.daniweb.com/forums/thread153310.html)

gangsta1903 Oct 24th, 2008 1:19 pm
Allocating an array of objects ?
 
Hi,
assuming that Element is a class,I prefer to create an array of objects size of which is unknown in this way:
Element *elementArray = new Element[length];

Is there another way to create an array of objects size of which is unknown without using new key(without malloc too)?

I am asking this question, because I have to create this array in a function.As you know, a variable created in a function scope is automatically destroyed at the end of the scope.

On the other hand,when we use new,we have to use delete.I think that using new-delete in a function scope is meaningless,if there is a way not to use them.

So,what are your suggestions?

Sci@phy Oct 24th, 2008 5:21 pm
Re: Allocating an array of objects ?
 
Don't know if it helps. I myself am not sure if it's ok to write it, but compiler doesn't complain:
void func(int n){
    int a[n];
    for (int i = 1; i <= n; i++) a[i+1] = i*i;
    for (int i = 1; i <= n; i++) std::cout<<a[i+1]<<std::endl;
    return;
}

gangsta1903 Oct 24th, 2008 5:26 pm
Re: Allocating an array of objects ?
 
Quote:

Originally Posted by Sci@phy (Post 720918)
Don't know if it helps. I myself am not sure if it's ok to write it, but compiler doesn't complain:
void func(int n){
    int a[n];
    for (int i = 1; i <= n; i++) a[i+1] = i*i;
    for (int i = 1; i <= n; i++) std::cout<<a[i+1]<<std::endl;
    return;
}

What I mean was using new and delete.
anyway, I learned the solution:local pointers should be handled before going out of scope.
:)

Sci@phy Oct 24th, 2008 5:28 pm
Re: Allocating an array of objects ?
 
Glad you've find answer. But this is what you asked (be careful what you ask :) ):
Quote:

Is there another way to create an array of objects size of which is unknown without using new key(without malloc too)?

grumpier Oct 25th, 2008 3:10 am
Re: Allocating an array of objects ?
 
Quote:

Originally Posted by Sci@phy (Post 720918)
Don't know if it helps. I myself am not sure if it's ok to write it, but compiler doesn't complain:
void func(int n){
    int a[n];
    for (int i = 1; i <= n; i++) a[i+1] = i*i;
    for (int i = 1; i <= n; i++) std::cout<<a[i+1]<<std::endl;
    return;
}

The array declaration
int a[n];
is not valid C++. Your compiler doesn't complain because it supports this as an extension. (Your compiler might also support the 1999 C standard (where such things are valid)).

To answer the original question, though, it depends on what you mean by "not using new key (without malloc too)". If you mean that your code does not invoke operator new or call malloc() directly, then you can use a standard container (std::vector, std::list, etc).

However, those containers work by performing dynamic memory allocation behind the scenes ... which means that code you write may not employ operator new or malloc(), but the containers themselves might.

Sci@phy Oct 25th, 2008 11:10 am
Re: Allocating an array of objects ?
 
Quote:

Originally Posted by grumpier (Post 721131)
The array declaration
int a[n];
is not valid C++. Your compiler doesn't complain because it supports this as an extension. (Your compiler might also support the 1999 C standard (where such things are valid)).

So, that's the thing! I knew something was wrong with it, but still :)

ddanbe Oct 25th, 2008 11:35 am
Re: Allocating an array of objects ?
 
In C# this would be easy.
Use jagged arrays!
But yeah if you're sticking to C++ you might want to read http://blog.voidnish.com/?p=16

gangsta1903 Oct 28th, 2008 5:01 pm
Re: Allocating an array of objects ?
 
Quote:

Originally Posted by ddanbe (Post 721292)
In C# this would be easy.
Use jagged arrays!
But yeah if you're sticking to C++ you might want to read http://blog.voidnish.com/?p=16

it seems interesting...does it require to include any third party header files?

ddanbe Oct 28th, 2008 6:21 pm
Re: Allocating an array of objects ?
 
I don't think so, ask the blog guy


All times are GMT -4. The time now is 4:23 pm.

Forum system based on vBulletin Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
©2003 - 2009 DaniWeb® LLC