vendredi 12 janvier 2018

code crashes when using auto loop

I am sorting a vector using a swap function. When I use the loop:

for (int i = 0; i < vec.size(); i++)

code runs fine but when I use: for (auto const &i:vec)

it crashes!

Error in ./run': free(): invalid next size (fast): 0x0000000001df0c20

#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <ctime>
#include <vector>
#include <array>

template <class T>
void myswap(T &a,
            T &b)
{
    T temp = a;
    a = b;
    b = temp;
}


int main() {

    const int N = 5;
    std::vector<int> vec = {112,32,11,4,7};

    std::cout << "\nInit\n";
    for (const auto &i:vec)
    {
        std::cout << i << "\t";
    }


    int j;
    for (auto const  &i:vec)
    //for (int i = 0; i < vec.size(); i++)
    {
        j = i;
        while (j > 0 && vec[j] < vec[j-1]) 
        {
            myswap(vec[j], vec[j-1]);
            j--;
        }
    }


    std::cout << "\n\nFinal\n";
    for (const auto &i:vec)
    {
        std::cout << i << "\t";
    }

    std::cout << "\n";
    return 0;
}

Aucun commentaire:

Enregistrer un commentaire