Непостижимая ошибка

258
24 ноября 2017, 07:35

Есть класс Флешка с полями фирма, тип, память, количество и дата производства

//...
private:
    string _firm;
    string _type;
    int _memoryGB;
    int _quantity;
    string _date;
};

Есть класс Список флешек

class FlashList
{
public:
    FlashList(vector<Flashka> list);
//...
private:
    vector<Flashka> _list;
};

Нужна функция для сортировки флешек по названию фирмы

//...
    vector<Flashka> FirmSort(string firm)
    {
        vector<Flashka> result;
        for (auto i = 0; i < _list.size(); ++i)
            if (firm == _list[i].getFirm())
                result.push_back(_list[i]);
        return result;
    }

Использую гугл-тесты

TEST(FlashList, Sort)
{
    Flashka a("HP", "NOR", 32, 56, "21.11.2017");
    Flashka b("HP", "NAND", 64, 48, "01.11.2017");
    Flashka c("Kingston", "NOR", 16, 24, "02.11.2017");
    Flashka d("Transcend", "NAND", 16, 48, "21.11.2017");
    vector<Flashka> v;
    v.push_back(a);
    v.push_back(b);
    v.push_back(c);
    v.push_back(d);
    FlashList List(v);
    vector<Flashka> trew;
    trew.push_back(a);
    trew.push_back(b);
    EXPECT_TRUE(trew == List.FirmSort("HP"));
}

выдаёт следующее

как побороть?

Answer 1

Ваша функция реализует стандартный (правда, только начиная с C++11) алгоритм copy_if. Там же и пример. В котором, правда, преждевременная оптимизация - вектор-приемник создатся со стартовым размером, потом обрезается, вместо использовагия std::back_inserter() в пустой вектор.

READ ALSO
Помогите с перегрузкой оператора ввода

Помогите с перегрузкой оператора ввода

Короче, задача такая: перегрузить оператор ввода класса дроби, при этом учесть, что если введен знаменатель "0", то должно выбрасываться исключение...

201
Переделать из stl в rtl

Переделать из stl в rtl

Всем доброго дня, необходимо было написать программу разрезания многоугольника прямой, дело сделаноПравда использовал библиотеку шаблонов...

276
Передача двумерного массива по ссылке С++

Передача двумерного массива по ссылке С++

Есть двумерный массив чиселInt mass[15][20] Нужно передать его в функцию так, чтобы изменение его в функции отражалось в main

218
Изменить код под статичный массив (c++)

Изменить код под статичный массив (c++)

Доброго времени сутокЕсть код, который нужно изменить под статичный массив

244