lundi 17 septembre 2018

error: no matching function for call to 'swap'

I am trying to sort cakeTypes vector by the size of their weight. But getting the error in sort implementation.

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

class CakeType 
{
public:
    const unsigned int weight_;
    const unsigned int value_;

    CakeType(unsigned int weight = 0, unsigned int value = 0) :
        weight_(weight),
        value_(value)
    {}
};

bool compareCakes(const CakeType& cake1, const CakeType& cake2) {
    return cake1.weight_ < cake2.weight_;
}


unsigned long long maxDuffelBagValue(const std::vector<CakeType>& cakeTypes,
                                     unsigned int weightCapacity)
{
    // calculate the maximum value that we can carry
    unsigned cakeTypesSize = cakeTypes.size();
    unsigned long long valueCalculator[weightCapacity+1][cakeTypesSize+1];

    for (unsigned int i = 0; i<=weightCapacity+1; i++) {
        valueCalculator[i][0] = 0;
    }

    for (unsigned int i = 0; i<=cakeTypesSize+1; i++) {
        valueCalculator[0][i] = 0;
    }
    vector<CakeType> sortedCakeTypes(cakeTypes);


    sort(sortedCakeTypes.begin(), sortedCakeTypes.end(), compareCakes);
    return 0;
}

This is part of there error:

exited with non-zero code (1).

In file included from solution.cc:1:

In file included from /usr/include/c++/v1/iostream:38:
In file included from /usr/include/c++/v1/ios:216:
In file included from /usr/include/c++/v1/__locale:15:
In file included from /usr/include/c++/v1/string:439:
/usr/include/c++/v1/algorithm:3856:17: error: no matching function for call to 'swap'

            swap(*__first, *__last);

            ^~~~

Aucun commentaire:

Enregistrer un commentaire