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