Thanks very much for your answers. After reading them I think I will use
the normal 4byte ints.

Another really fast question I have is:
I define a struct with some data and an int n. I then initialise an array
with my struct. the n var is set to the position of each element. so
mystruct[0].n is 0,  mystruct[0].n is 1 etc. In the end I have to sort the
elements of the array back to their original positions. I use
std::sort(mystruct, mystruct+k-1, sort_n); which does the job. Would it be
more efficient to use my own custom sorting sinse I know that there are n s
from 0 to some known number?

2012/3/6 Axel Freyn <[email protected]>

> I agree it is possible in C++. However you have to accept that your code
> will run slow on almost all processors: most processors do not have
> hardware support for 3byte integers, so you have to implement ALL
> operations in software. You could write something like:
> class int3{
>   char d[3];
>   public:
>     int3(int x){
>       assert(x<(1l<<24));
>       d[0]=x%256;
>       d[1]=(x/265)%256;
>       d[2]=(x/256/256)%256;
>    }
>    friend int3 operator +(int3, int3);
> };
> int3 operator +(int3 x, int3 y){
>   int3 z;
>   for(int i =0;i <3;i++)
>     z.d[i]=x.d[i]+y.d[i];
>   return z;
> }
> However, I'm skipping some important parts:
> - how to treat overflow, if one of the three summations gives a result >
> 128 (C++ does not guarantee what will happen then, you have to check the
> values before adding them and the do the overflow- handling yourself.)
> - some test code ;)
> - for std::sort you can either define " bool operator<", or you define a
> functor class doing that comparison, and pass that functor to std::sort
>
> Axel
> Am 06.03.2012 06:56 schrieb "Neal Zane" <[email protected]>:
>
> I am thinking putting those guys in 256 buckets each holding 16 bit shorts
>> and some arrangements would make each bucket sortable using sort().
>> On Mar 5, 2012 3:14 PM, "Βαγγέλης Μαμαλάκης" <[email protected]> wrote:
>>
>>> Well I a writing a program for a competition and I am initializing some
>>> arrays whose values will be less than 1million so I am trying to save
>>> memory. I am also curious.
>>> Would it be possible to give me some example code or psedocode.
>>> Thanks for your interest.
>>> On Mar 6, 2012 12:44 AM, "Damian Walczak" <[email protected]>
>>> wrote:
>>>
>>>> Hi
>>>>
>>>> On Mon, Mar 5, 2012 at 8:27 PM, Sidhartha Mani 
>>>> <[email protected]>wrote:
>>>>
>>>>> You could
>>>>> use 3 char vars to hold your values, but i believe, the size of char
>>>>> differs on different architectures.
>>>>>
>>>>
>>>> AFAIR size of char is always 1 byte in C/C++ and it doesn't matter what
>>>> architecture you are using.
>>>>
>>>> the implementation of this though. I think std::sort() only works and
>>>>> is meant for abstract data structures like vectors and such, not on
>>>>> elementary ones like int.
>>>>>
>>>>
>>>> You can use std::sort for sorting arrays, example is even on wikipedia
>>>> [1]
>>>> If you write your own class, it's enough to write proper comparison
>>>> function and use second version of std::sort [2]
>>>>
>>>>
>>>> If I may ask - why do you need 3-byte 'int' ?
>>>>
>>>> Best,
>>>> D.
>>>>
>>>> [1] http://en.wikipedia.org/wiki/Sort_(C%2B%2B)
>>>> [2] http://www.cplusplus.com/reference/algorithm/sort/
>>>>
>>>>
>>>>
>>>>> Sidhartha
>>>>>
>>>>>
>>>>>
>>>>> On 06-Mar-2012, at 12:42 AM, bugos <[email protected]> wrote:
>>>>>
>>>>> > Hello,
>>>>> > is there a way to define my own data type, which will be idetical to
>>>>> > an int, but just 3 bytes size? i must be able to use it as an int and
>>>>> > even use std::sort() with it.
>>>>> >
>>>>> > --
>>>>> > You received this message because you are subscribed to the Google
>>>>> Groups "Google Code Jam" group.
>>>>> > To post to this group, send email to [email protected].
>>>>> > To unsubscribe from this group, send email to
>>>>> [email protected].
>>>>> > For more options, visit this group at
>>>>> http://groups.google.com/group/google-code?hl=en.
>>>>> >
>>>>>
>>>>> --
>>>>> You received this message because you are subscribed to the Google
>>>>> Groups "Google Code Jam" group.
>>>>> To post to this group, send email to [email protected].
>>>>> To unsubscribe from this group, send email to
>>>>> [email protected].
>>>>> For more options, visit this group at
>>>>> http://groups.google.com/group/google-code?hl=en.
>>>>>
>>>>>
>>>>  --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "Google Code Jam" group.
>>>> To post to this group, send email to [email protected].
>>>> To unsubscribe from this group, send email to
>>>> [email protected].
>>>> For more options, visit this group at
>>>> http://groups.google.com/group/google-code?hl=en.
>>>>
>>>  --
>>> You received this message because you are subscribed to the Google
>>> Groups "Google Code Jam" group.
>>> To post to this group, send email to [email protected].
>>> To unsubscribe from this group, send email to
>>> [email protected].
>>> For more options, visit this group at
>>> http://groups.google.com/group/google-code?hl=en.
>>>
>>  --
>> You received this message because you are subscribed to the Google Groups
>> "Google Code Jam" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> [email protected].
>> For more options, visit this group at
>> http://groups.google.com/group/google-code?hl=en.
>>
>  --
> You received this message because you are subscribed to the Google Groups
> "Google Code Jam" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/google-code?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google Code Jam" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-code?hl=en.

Reply via email to