1

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.

3 Answers 3

8

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.

Sign up to request clarification or add additional context in comments.

14 Comments

But why do you have to specify size in vector?
@Rohit: You don't. You can just start with an empty 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.
Thanks @JerryCoffin. But I want to use either CArray or Arrays.
@Rohit 1. You may want to access the ith element, to do that, you need to resize the vector first. 2. For efficiency concern. If you know the size of the array, you can resize it, better than keep pushing back. (In this case, reserve() maybe a better choice though.)
@gishu: You can use a 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().
|
2

Use dynamic memory allocation.

int size;
cin>>size
int *ptr = new int[size];

http://www.cplusplus.com/doc/tutorial/dynamic/

6 Comments

You have more control on array than vector
Why do you say, You have more control on an array than a vector?
Sometimes, a vector is overkill. A vector does do everything an array does, but lets you add new elements beyond its current size, resize it, search through it, erase elements, etc
@Rohit: So far, it sounds like you think a 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.
well in a debug build vectors can be slow, but in a release build the difference is almost nothing between vectors and arrays.
|
2

T *pData

pData = new T[NUM_ELEMENTS];

Basically using the new operator. Read more about new from any C++ reference

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.