Re: change vector type?
tf wrote:
I work with a lot of large 3D data, commonly stored raw or close to that
in files. It's common to read such data into a char or unsigned char
array,
Common, maybe; good, no. I'd memory-map the thing into my process space and
then create an STL-like container on top of it. Boost has a useful library
for creating iterators, which comes handy there, the rest is just work. If
the file is too large for memory (but I don't think it is in your case),
things get more complicated, but still feasible.
// external knowledge tells me this is 16bit, unsigned data.
std::vector<unsigned short> typed_data(data.size()/2);
unsigned short can be 32 bits, I'd use uint16_t.
In any case, if you say that you need a vector of 16-bit integers, why not
read the file into one in the first place? You are guaranteed contiguous
storage, so giving that or a buffer of chars to the file's read function
should work the same.
I can also write my methods to accept unsigned short* and just
reinterpret_cast &data.at(0).
Not so if the pointer is not suitably aligned. On x86, you will be charged
for unaligned accesses without ever seeing a bill, on other CPUs you get a
bus error.
Uli
--
Sator Laser GmbH
Gesch??ftsf??hrer: Thorsten F??cking, Amtsgericht Hamburg HR B62 932
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]