If this is your first visit, be sure to
check out the FAQ by clicking the
link above. You may have to register
before you can post: click the register link above to proceed. To start viewing messages,
select the forum that you want to visit from the selection below.

[RESOLVED] How to convert an STL/CLR vector to a .NET array

The second sample in this MSDN article demonstrates how to convert an STL/CLR map<> to a .NET IDictionary<>. I tried to transpose this pattern to a conversion from a vector<> to an array<>, but this code fails to compile:

The last line before the return statement gives me an error C2440, telling me that a 'cliext::vector<_Value_t> ^' can't be converted into a 'cli::array<Type> ^'.

I only had to go that detour at all because I didn't find a method like push_back or add for the CLI array

There was, BTW, something that made me wonder in the MSDN sample code: It declares a stand-alone variable of type System::Collections::Generic::IDictionary<float, int>. I always were of the strong belief that these ISomethings could only be implemented as part of a "hosting" class.

Re: How to convert an STL/CLR vector to a .NET array

Originally Posted by Alex F

If you want array, create array and not vector.

Ok, but what if I don't know the number of entries in advance? This is the reason why I chose a vector. The requirement for a variable number of entries (unfortunately) is not apparent in the function as it is now, but the function is planned to be extended to be able to return the specific holidays for each one of the German federal states.

So you might - reasonably - argue: Then why not return the vector? Answer: The collection of holidays is finally meant to be assigned to the BoldedDates property of a MonthCalendar control, so it has to be converted to an array sooner or later anyway, and I would prefer to confine details like that inside the class.

The interface of the Holidays class is not yet carved in stone, however. It has just two static member functions so far, and one of them is even private.

Re: How to convert an STL/CLR vector to a .NET array

Uuuh... Sometimes life could be so easy if I'd only look in the right place: The STL/CLR vector container has a method that does nothing more and nothing less than returning an array constructed out of the vector's contents. It's called - what a surprise: to_array().

So the only thing I had to do was to replace the last two lines of the function body I posted above by

Re: How to convert an STL/CLR vector to a .NET array

Originally Posted by Eri523

Uuuh... Sometimes life could be so easy if I'd only look in the right place: The STL/CLR vector container has a method that does nothing more and nothing less than returning an array constructed out of the vector's contents. It's called - what a surprise: to_array().

Yep, there's a lot to be learned by just looking around at the class methods in msdn and seeing what's there.

* The Perfect Platform for Game Developers: Android
Developing rich, high performance Android games from the ground up is a daunting task. Intel has provided Android developers with a number of tools that can be leveraged by Android game developers.

* The Best Reasons to Target Windows 8
Learn some of the best reasons why you should seriously consider bringing your Android mobile development expertise to bear on the Windows 8 platform.