Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   C++ (http://www.velocityreviews.com/forums/f39-c.html)
-   -   Copying array to an array, I really thought I knew what was going on. (http://www.velocityreviews.com/forums/t536244-copying-array-to-an-array-i-really-thought-i-knew-what-was-going-on.html)

DaTurk 09-10-2007 07:11 PM

Copying array to an array, I really thought I knew what was going on.
 
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?


=?ISO-8859-1?Q?Erik_Wikstr=F6m?= 09-10-2007 07:25 PM

Re: Copying array to an array, I really thought I knew what was goingon.
 
On 2007-09-10 21:11, DaTurk wrote:
> 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?


If you are coding in C++/CLI you are asking in the wrong group. This
group is for discussing C++ (and while C++/CLI might have a name and
syntax similar to C++ they are two very different things). I would
suggest you ask your question in either one of the microsoft.public.*
groups, microsoft.public.dotnet.languages.vc is probably the one you
want. Another good place to ask is forums.microsoft.com

--
Erik Wikström

Jim Langston 09-11-2007 12:04 AM

Re: Copying array to an array, I really thought I knew what was going on.
 
"DaTurk" <mmagdits@hotmail.com> wrote in message
news:1189451462.940196.263650@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.




All times are GMT. The time now is 02:17 AM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.