Hello, what is the equivalent of: void foo(int array[]) for boost::array? Thanks, Panayiotis
There is no equivalent, since boost::array must be parametrisized with the size. So boost::array<std::string, 10> has different type as boost::array<std::string, 11>. You might be able to use: template<int ArraySize_> void foo(boost::array<int, ArraySize_> const&); But this depeneds if you know the size of your array at compile time. Using std::vector<int> might be of more value ;) Best Regards, Ovanes On 8/21/07, Panayiotis <panayk@gmail.com> wrote:
Hello,
what is the equivalent of:
void foo(int array[])
for boost::array?
Thanks, Panayiotis _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
Ovanes Markarian wrote:
There is no equivalent, since boost::array must be parametrisized with the size. So boost::array<std::string, 10> has different type as boost::array<std::string, 11>.
You might be able to use:
template<int ArraySize_> void foo(boost::array<int, ArraySize_> const&);
But this depeneds if you know the size of your array at compile time.
Using std::vector<int> might be of more value ;)
Best Regards, Ovanes
The problem is that: a) I don't know the size at compile time. b) Once initialized, the array's size stays constant, so vector would be overkill. Actually what I really want to do is: map<int, int[]> in an elegant and safe way. Oh well, I'll have to go with map<int, void*> or make a struct to hold the size of a c array. Thanks for the answer, Panayiotis
On 21/08/07, Panayiotis <panayk@gmail.com> wrote:
--- snip --- The problem is that: a) I don't know the size at compile time. b) Once initialized, the array's size stays constant, so vector would be overkill.
There's probably a better way to do this that I don't know about, but one fall-back could be boost::any (http://boost.org/libs/any). hth, Darren
The better way to do this, would be once to initialize the map of const vectors. I think this will give the compiler enough info not to grow vectors and reserve a lot of space. Both vector and any will reserve/allocate heap space, which is less efficient compared to array. On 8/21/07, Darren Garvey <lists.drrngrvy@googlemail.com> wrote:
On 21/08/07, Panayiotis <panayk@gmail.com> wrote:
--- snip --- The problem is that: a) I don't know the size at compile time. b) Once initialized, the array's size stays constant, so vector would be overkill.
There's probably a better way to do this that I don't know about, but one fall-back could be boost::any ( http://boost.org/libs/any).
hth, Darren
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
Panayiotis wrote:
Ovanes Markarian wrote:
There is no equivalent, since boost::array must be parametrisized with the size. So boost::array<std::string, 10> has different type as boost::array<std::string, 11>.
You might be able to use:
template<int ArraySize_> void foo(boost::array<int, ArraySize_> const&);
But this depeneds if you know the size of your array at compile time.
Using std::vector<int> might be of more value ;)
Best Regards, Ovanes
The problem is that: a) I don't know the size at compile time. b) Once initialized, the array's size stays constant, so vector would be overkill.
Why is std::vector an overkill, if I may ask? What makes it heavier than C array?
participants (4)
-
Darren Garvey
-
Ovanes Markarian
-
Panayiotis
-
Yuval Ronen