Ulrich Eckhardt wrote:
greg.ruthenbeck@gmail.com wrote:
Can anyone suggest a way of forcing size_t to use __uint64?
I'm using VS8 (2005) on Win32.
No. You are using a 32 bit system, i.e. pointers (and thus also
size_t) are 32 bit.
(I need a way of handling big sparse matrices in
boost::ublas::mapped_matrix which makes use of std::map<T,size_t>
(hence I the max size for a mapped_matrix is approx 65535 x 65535).
Forcing the use of __uint64 should fix this.)
Then use a map<T, uint64_t> or modify Boost, simple as that. Mucking
around with the innards of the system won't do you any good, it will
break at too many other places in return.
I just thought of one thing. If the OP is on a 32-bit system, what
chances does he have to _ever_ be able to have a batrix of more than
4 gigabytes total size? And that's assuming that the code and the
kernel mapping doesn't take any room in his process' memory and that
his T is char.
He does *need* to go 64 bits. Only then he has a chance of getting
an array or any other structure to occupy more than 4 gigs. No?
as its back end). Only non-zero elements of the matrix take up memory.