Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C++ > Copying array to an array, I really thought I knew what was going on.

Reply
Thread Tools

Copying array to an array, I really thought I knew what was going on.

 
 
DaTurk
Guest
Posts: n/a
 
      09-10-2007
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?

 
Reply With Quote
 
 
 
 
=?ISO-8859-1?Q?Erik_Wikstr=F6m?=
Guest
Posts: n/a
 
      09-10-2007
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
 
Reply With Quote
 
 
 
 
Jim Langston
Guest
Posts: n/a
 
      09-11-2007
"DaTurk" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed) 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.


 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
my knew speel cechker Morkie Morgan the Moron Computer Support 3 10-22-2006 01:59 AM
i knew this before... =?Utf-8?B?cm9kY2hhcg==?= ASP .Net 0 11-10-2005 12:33 AM
wok wifi - knew those woks were good for something hippie_nz Computer Support 2 05-30-2005 04:51 PM
OT: And I thought I knew how to waste time Neil MCSE 10 07-27-2004 02:44 AM
I knew there was an mystery to it ! =?ISO-8859-1?Q?Morris_Carr=E9?= Python 0 05-09-2004 08:56 PM



Advertisments