"DaTurk" <mm******@hotmail.comwrote in message
news:11**********************@k79g2000hse.googlegr oups.com...
This is probably a very silly, and simple question. If I'm coding in
CLI, and I want to copy an array to an array, not a deep copy, just
something of the nature arr1 = arr2, what is going on?
I assumed the address of the first element is getting copied, so i
essentially have two handles to the same memory. And changes in one
would be reflected in the other.
But what if I have something like this
public value struct MyStruct
{
Int32 MyNumber;
};
array<MyStruct>^ arr1 = gcnew array<MyStruct(10);
//We fill the array with 10 MyStruct
array<MyStruct>^ arr2 = arr1;
Now what do we have here? since it's a value struct, did we
essentially do a deep copy?
Ignoring hte fact that this isn't C++ code but something else (C# maybe?)
and presuming ^ is some type of pointer...
If this code was:
public value struct MyStruct
{
Int32 MyNumber;
};
MyStruct* arr1 = new MyStruct[10];
//We fill the array with 10 MyStruct
MyStruct* arr2 = new MyStruct[10];
You would want to iterate over the array copying elements. The manual
method is:
for ( size_t i = 0; i < 10; ++i )
arr2[i] = arr1[i];
This is a very common task, however, so TPTB added it to the stl with
std::copy
std::copy( arr1.begin(), arr1.end(), std::inserter(arr2, arr2.end()) );
The syntax for the 3rd parameter of std::copy here may be wrong, but it
should work.
Other than that, ask in a newsgroup related to your language, whatever it
is.