Prtogramowanie c/ C++

Opis forum

  • Nie jesteś zalogowany.
  • Polecamy: Gry

#1 2012-01-03 20:09:00

bronek

Administrator

Zarejestrowany: 2012-01-03
Posty: 14
Punktów :   

struktura vector.cpp

Kod:

Vector::Vector(int ArraySize)
                 {
                   this->Size = 0;
                   this->Capacity = ArraySize;
                   this->VectorArray = new unsigned char[this->Capacity];
                 }

void Vector::PutSignIntoArray(unsigned char Sign)
                {
                    if(this->Size < this->Capacity)
                        {
                        this->VectorArray[this->Size]= Sign;
                        this->Size++;
                        //cout << "Dodano Element :" << Sign<< "\n";
                        }
                    else
                        {
                            int NewCapacity=this->Size+5;
                            Vector MyVector3(NewCapacity);

                            for(int counter = 0; counter <= this->Size; counter++)
                                {
                                    if(counter == this->Size)
                                        {
                                            MyVector3.VectorArray[counter] = Sign;
                                            MyVector3.Size++;
                                        }                                    
                                    else
                                        {
                                            MyVector3.VectorArray[counter] = this->ReadArrayAt(counter);
                                            MyVector3.Size++;
                                        }
                                }
                            
                            cout << "\nDodano Element (zostala rozszerzona tablica)\n\n";
                            delete[] this->VectorArray;
                            this->VectorArray = new unsigned char[NewCapacity];
                            this->Capacity = NewCapacity;
                            this->Size = 0;

                            for(int counter2 = 0; counter2 < MyVector3.Size; counter2++)
                                {
                                    this->VectorArray[counter2]=MyVector3.ReadArrayAt(counter2);
                                    this->Size++;
                                }
                            
                        
                        }
                }


void Vector::AddVectorMMX(Vector VectorToAdd)
                        {
                        
                                        __m64* vektor1;
                                        __m64* vektor2;

                                if(this->Size >= VectorToAdd.Size)
                                    {
                                        for(int counter = 0; counter< this->Size; counter+=8)
                                            {
                                                vektor1 = (__m64*)&this->VectorArray[counter];
                                                vektor2 = (__m64*)&VectorToAdd.VectorArray[counter];
                                                *vektor1 = _mm_adds_pu8(*vektor1,*vektor2);    
                                            }
                                      _mm_empty();
                                    }
             }

void    Vector::AddVectorSSE(Vector VectorToAdd)
                        {
                            __m128i vektor4;
                            __m128i vektor5;
                            
                            if(this->Size >= VectorToAdd.Size)
                                    {
                                     for(int counter=0; counter < this->Size; counter+=16)
                                            {
                                                vektor4 = _mm_loadu_si128((__m128i*)&this->VectorArray[counter]);
                                                vektor5 = _mm_loadu_si128((__m128i*)&VectorToAdd.VectorArray[counter]);
                                                _mm_storeu_si128((__m128i*)&this->VectorArray[counter], _mm_add_epi8(vektor5, vektor4));
                                            }
                                    }
              }

Offline

 

Stopka forum

RSS
Powered by PunBB
© Copyright 2002–2008 PunBB
Polityka cookies - Wersja Lo-Fi


Darmowe Forum | Ciekawe Fora | Darmowe Fora
www.forumawf.pun.pl www.kalservs.pun.pl www.poke-batles.pun.pl www.nakacu.pun.pl www.ez20092010.pun.pl