Forum: GNU Radio c++ question

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Brett L. Trotter (Guest)
on 2008-10-21 09:32
(Received via mailing list)
I've got a relatively large array of maximal length LFSR masks I'd like
to be able to use, there are of course a different number for each
degree, increasing with the degree.

I forgot that C++ doesn't support jagged arrays like C# so I created
this great little jagged array with the 2nd dimension 0 terminated (mask
of 0 isn't really useful anyway, so I used it like null) so that I could
figure out how many were in each degree. I've been googling and IRCing
and trying to figure out if there's a way to initialize a vector of
vectors as a constant in a class header file or something that would
hold these constants and coming up short on answers. Do I need to dump
all my data to a file and read it in? That seems poor for minimizing the
initialization delay. Is anyone willing to point me in the right
direction?
Chris S. (Guest)
on 2008-10-21 22:58
(Received via mailing list)
Brett L. Trotter wrote:
> I forgot that C++ doesn't support jagged arrays like C# so I created
> this great little jagged array with the 2nd dimension 0 terminated (mask
> of 0 isn't really useful anyway, so I used it like null) so that I could
> figure out how many were in each degree. I've been googling and IRCing
> and trying to figure out if there's a way to initialize a vector of
> vectors as a constant in a class header file or something that would
> hold these constants and coming up short on answers. Do I need to dump
> all my data to a file and read it in? That seems poor for minimizing the
> initialization delay. Is anyone willing to point me in the right direction?


1. You can initialize multidimensional c arrays at compile time:
int a[2][2] = {{1, 2}, {3,4}};

2. If I cared abound speed (like you do), I wouldn't use vector of
vector, rather a single long c-style array.  (I'd use code to make it
appear as it if is a 2-d array eventhough it's 1-d.)  And I'd use
Stream.read and Stream.write to read/write it to disk which will be very
fast.  Using the example above:


int n = Rows * Cols;
int* a = new int[n];

// fill the array here using code

std::ofstream s("array.bin", std::ios::binary);
s.write(reinterpret_cast<const char*>(a), n * sizeof(int));

// subsequent loads will use the binary file:
std::ifstream s("array.bin", std::ios::binary);
s.read(reinterpret_cast<char*>(a), n * sizeof(int));

Chris
This topic is locked and can not be replied to.