Changeset 455


Ignore:
Timestamp:
12/05/15 18:31:38 (6 years ago)
Author:
oriona
Message:

Malloc/free replaced by new/delete, pointers-to-vectors changed into vectors.

Location:
cpp/frams
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • cpp/frams/_demos/simil_test.cpp

    r451 r455  
    7171
    7272    // prepare output parameters from .gen file
    73     vector<Geno *> *pvGenos = new vector<Geno *>();
    74     vector<char *> *pvNames = new vector<char *>();
     73    vector<Geno *> pvGenos = vector<Geno *>();
     74    vector<char *> pvNames = vector<char *>();
    7575
    7676    // check if there is a switch
     
    138138        if ((pNextGenotype != NULL) && (pNextGenotype->isValid()))
    139139        {
    140             pvGenos->push_back(pNextGenotype);
     140            pvGenos.push_back(pNextGenotype);
    141141            char *szNewName = new char [ loaded->name.len() + 1];
    142142            strcpy(szNewName, loaded->name.c_str());
    143             pvNames->push_back(szNewName);
     143            pvNames.push_back(szNewName);
    144144        }
    145145        else
     
    157157
    158158    // create the empty array of similarities
    159     aaSimil = new pDouble [pvGenos->size()];
    160     for (unsigned int k = 0; k < pvGenos->size(); k++)
    161     {
    162         aaSimil[k] = new double [pvGenos->size()];
    163                 for (unsigned int l = 0; l < pvGenos->size(); l++)
     159    aaSimil = new pDouble [pvGenos.size()];
     160    for (unsigned int k = 0; k < pvGenos.size(); k++)
     161    {
     162        aaSimil[k] = new double [pvGenos.size()];
     163                for (unsigned int l = 0; l < pvGenos.size(); l++)
    164164            aaSimil[k][l] = 0.0;
    165165    }
    166166
    167167    // compute and remember similarities
    168         for (unsigned int i = 0; i < pvGenos->size(); i++)
    169     {
    170                 for (unsigned int j = 0; j < pvGenos->size(); j++)
    171         {
    172             dSimilarity = M.EvaluateDistance(pvGenos->operator[](i), pvGenos->operator[](j));
     168        for (unsigned int i = 0; i < pvGenos.size(); i++)
     169    {
     170                for (unsigned int j = 0; j < pvGenos.size(); j++)
     171        {
     172            dSimilarity = M.EvaluateDistance(pvGenos.operator[](i), pvGenos.operator[](j));
    173173            aaSimil[i][j] = dSimilarity;
    174174        }
     
    179179        // if "-names" switch was given,
    180180        // print the number of genotypes and their names
    181         printf("%li\n", pvGenos->size());
    182                 for (unsigned int iGen = 0; iGen < pvNames->size(); iGen++)
    183         {
    184             printf("%s\n", pvNames->at(iGen));
     181        printf("%li\n", pvGenos.size());
     182                for (unsigned int iGen = 0; iGen < pvNames.size(); iGen++)
     183        {
     184            printf("%s\n", pvNames.at(iGen));
    185185        }
    186186    }
    187187
    188188    // print out the matrix of similarities
    189         for (unsigned int i = 0; i < pvGenos->size(); i++)
    190     {
    191                 for (unsigned int j = 0; j < pvGenos->size(); j++)
     189        for (unsigned int i = 0; i < pvGenos.size(); i++)
     190    {
     191                for (unsigned int j = 0; j < pvGenos.size(); j++)
    192192        {
    193193            printf("%.2lf\t", aaSimil[i][j]);
     
    197197
    198198    // delete vectors and arrays
    199         for (unsigned int i = 0; i < pvGenos->size(); i++)
    200     {
    201         delete pvGenos->operator[](i);
    202         delete [] pvNames->operator[](i);
     199        for (unsigned int i = 0; i < pvGenos.size(); i++)
     200    {
     201        delete pvGenos.operator[](i);
     202        delete [] pvNames.operator[](i);
    203203        delete [] aaSimil[i];
    204204    }
    205205
    206     delete pvGenos;
    207     delete pvNames;
    208206    delete [] aaSimil;
    209207
  • cpp/frams/model/similarity/SVD/matrix_tools.cpp

    r389 r455  
    1515double *Create(int nSize)
    1616{
    17         double *matrix = (double *)malloc(nSize * sizeof(double));
     17        double *matrix = new double[nSize];
    1818
    1919        for (int i = 0; i < nSize; i++)
     
    4040
    4141        if (delSize != 0)
    42                 free(toDel);
     42                delete[] toDel;
    4343        return c;
    4444}
     
    7171
    7272        if (delSize != 0)
    73                 free(toDel);
     73                delete[] toDel;
    7474
    7575        return m_Power;
     
    170170                B = Multiply(B, Z, nSize, nSize, nSize, B, nSize);
    171171
    172                 free(Ones);
    173                 free(Eye);
    174                 free(Z);
    175                 free(D);
     172                delete[] Ones;
     173                delete[] Eye;
     174                delete[] Z;
     175                delete[] D;
    176176        }
    177177
     
    186186        double *W = Transpose(Vt, nSize, nSize);
    187187
    188         free(B);
    189         free(Vt);
     188        delete[] B;
     189        delete[] Vt;
    190190
    191191        for (int i = 0; i < nSize; i++)
     
    202202        sqS = Power(S, nSize, nSize, 0.5, S, nSize);
    203203        dCoordinates = Multiply(W, sqS, nSize, nSize, nSize, W, nSize);
    204         free(sqS);
     204        delete[] sqS;
    205205
    206206        for (int i = 0; i < nSize; i++)
     
    222222        }
    223223
    224         free(Eigenvalues);
    225         free(dCoordinates);
    226 }
     224        delete[] Eigenvalues;
     225        delete[] dCoordinates;
     226}
Note: See TracChangeset for help on using the changeset viewer.