I have an array defined as;
static double Temp_data[TABLE_SIZE];
I want to change the size of the array according to the user input. Is this possible? Please help me. Thanks.
No. You probably want to use std::vector<double> Temp_data;
Then you can use its resize()
member function to set the size as you see fit.
Edit: just to be clear, you generally want to avoid using new
directly if you can (and in this case, you can very easily). Direct use of new
is a constant source of bugs of quite a few types. std::vector
handles quite a few corner cases that are difficult to get correct with new
, ensures that the data gets cleaned up when it goes out of scope, etc.
I've said before, and I'll repeat here: at one time, you had little choice but to write code that used new
. Now, you do have a choice -- and you should exercise it. Given a modern compiler and standard library, there's almost never any reason to allocate an array with new
.
vector
and use push_back
to add as many items as you want (well, up to a limit, of course). If, however, the user is supplying a size, you can use resize
to make it that size - Jerry Coffin 2012-04-04 04:58
reserve()
maybe a better choice though. - cxyzs7 2012-04-04 05:01
std::vector
in MFC programs without any problem at all. Anyway, given those choices, use CArray. It's not as clean as std::vector
, but still a lot better than using new
directly - Jerry Coffin 2012-04-04 05:02
std::vector
with a function that requires an array -- when you need to call that function, just give it &myvector[0]
, or (with a newer compiler) myvector.data()
- Jerry Coffin 2012-04-04 05:06
reserve
and resize
but they aren't really specifying the array size in vector. you can just keep on using vector with out any concern of the size. reserve
and resize
are for efficiency concerns - Rohit Vipin Mathews 2012-04-04 05:14
Use dynamic memory allocation.
int size;
cin>>size
int *ptr = new int[size];
http://www.cplusplus.com/doc/tutorial/dynamic/
vector
is the one that really gives you more control. In any case, it's at least partly true -- if you really need something that doesn't resize (for example), consider std::array
instead. Searching (for one example) isn't part of vector
though -- you'd use a standard algorithm, which an apply just as well to an array - Jerry Coffin 2012-04-04 05:42
array
for performance reasons too - Rohit Vipin Mathews 2012-04-04 05:45
T *pData
pData = new T[NUM_ELEMENTS];
Basically using the new operator. Read more about new from any C++ reference