Re: [eigen] is MAP oneway ? (urgent) |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/eigen Archives
]
- To: eigen@xxxxxxxxxxxxxxxxxxx
- Subject: Re: [eigen] is MAP oneway ? (urgent)
- From: Benoit Jacob <jacob.benoit.1@xxxxxxxxx>
- Date: Wed, 24 Jun 2009 14:21:43 +0200
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:content-type :content-transfer-encoding; bh=06z3ZP8nt2s1ZTZFBQXuBGJNsdHnC7F4+LJI2NrfXl0=; b=bSOZBCoY+5yPqVEIhCIp2Mx7vI/Pxp7r/S+GkyvC0h35wNtMP8vTcEFdSEydwPFID7 5tCkOvKsYld70gfRP+7STpncehiwQxYtp6UxbVhkRbtzH7Hhx9My/nKlsEyoRIhtBXgn DdUrhZTTKM0wwLEUmDyq41SujXi3iuPR81OdQ=
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type:content-transfer-encoding; b=P5vTuuyfGBHlokCcf+F81i6TabX9CSAvQiQ3MKcAhvunKOv4zyACVN/rafLrVtWLeb mIafOq+LeoNbFRlG7l7cgVtND+ZdmPx0BJh5N+vRVqsMOXardWcGfPeehIWo4o9+bXmK XEHKfBZ53ynNd12WsxmEPsxA3rfHhKNaKO/WM=
2009/6/24 Gael Guennebaud <gael.guennebaud@xxxxxxxxx>:
> On Wed, Jun 24, 2009 at 2:13 PM, Helmut
> Jarausch<jarausch@xxxxxxxxxxxxxxxxxxx> wrote:
>> Hi,
>>
>> I have to write a function which is called by code which is
>> written in C-style (though compiled with g++).
>> It delivers me data in a C-array (double*) and expects me
>> to modify this.
>>
>> When I tried the following example, I was a bit surprised.
>> So, what does MAP do?
>>
>>
>> #include <iostream>
>> using std::cerr; using std::endl;
>> #include <Eigen/Core>
>> // import most common Eigen types
>> USING_PART_OF_NAMESPACE_EIGEN
>>
>> int main() {
>> double data[4] = {1, 2, 3, 4};
>>
>> VectorXd D = Eigen::Map<VectorXd>(data,4);
>> cerr << "D before : " << D << endl;
>> data[1]= 7;
>> cerr << "D after : " << D << endl; // nothing has changed
>> }
>>
>>
>> So, do I have to copy all data from D.data() back to data?
>>
>> Is there something like "overlaying" an Eigen-Vector onto some raw
>> C-array?
>
> this is exactly what Map do, however you have to deal with Map object
> directly, e.g.
Yes, your problem was that you copied the Map object into a VectorXd.
While the Map object stays in sync with 'data', on the other hand, D
is just a separate copy, not a Map!!
Benoit