Здравствуйте, Аноним, Вы писали:
А>Здравствуйте есть такой код
А>А> std::vector< sValue > m_stdVector;
А> m_stdVector.push_back(sValue(2));
А> m_stdVector.push_back(sValue(1));
А> std::sort( m_stdVector.begin(), m_stdVector.end(), boost::bind(&sValue::iA,_1));
А>
А>При выполнении получаю DEBUG_ERROO
А>А>_DEBUG_ERROR2("invalid operator<", _Where, _Line);
А>
А>Не подскажите в чем проблема
Надо так
std::sort( m_stdVector.begin(), m_stdVector.end(), boost::bind(&sValue::iA,_1) < boost::bind(&sValue::iA,_2));
Ошибка потому что в boost::bind(&sValue::iA,_1) и предикат(a, b) и предикат(b, a) может быть true, что нарушает Strict Weak Ordering.
Здравствуйте есть такой код
std::vector< sValue > m_stdVector;
m_stdVector.push_back(sValue(2));
m_stdVector.push_back(sValue(1));
std::sort( m_stdVector.begin(), m_stdVector.end(), boost::bind(&sValue::iA,_1));
При выполнении получаю DEBUG_ERROO
_DEBUG_ERROR2("invalid operator<", _Where, _Line);
Не подскажите в чем проблема
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте есть такой код
А>А> std::vector< sValue > m_stdVector;
А> m_stdVector.push_back(sValue(2));
А> m_stdVector.push_back(sValue(1));
А> std::sort( m_stdVector.begin(), m_stdVector.end(), boost::bind(&sValue::iA,_1));
А>
А>При выполнении получаю DEBUG_ERROO
А>А>_DEBUG_ERROR2("invalid operator<", _Where, _Line);
А>
А>Не подскажите в чем проблема
А sort разве не бинарный предикат принимает?
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте есть такой код
А>А> std::vector< sValue > m_stdVector;
А> m_stdVector.push_back(sValue(2));
А> m_stdVector.push_back(sValue(1));
А> std::sort( m_stdVector.begin(), m_stdVector.end(), boost::bind(&sValue::iA,_1));
А>
А>При выполнении получаю DEBUG_ERROO
А>А>_DEBUG_ERROR2("invalid operator<", _Where, _Line);
А>
А>Не подскажите в чем проблема
Гм, возможно что для класса sValue вы не определили bool operator<(sValue&) который насколько я помню необходим для сортировки.
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте есть такой код
А>А> std::vector< sValue > m_stdVector;
А> m_stdVector.push_back(sValue(2));
А> m_stdVector.push_back(sValue(1));
А> std::sort( m_stdVector.begin(), m_stdVector.end(), boost::bind(&sValue::iA,_1));
А>
А>При выполнении получаю DEBUG_ERROO
А>А>_DEBUG_ERROR2("invalid operator<", _Where, _Line);
А>
А>Не подскажите в чем проблема
Для вашего класса не правильно реализован оператор <
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте есть такой код
А>А> std::vector< sValue > m_stdVector;
А> m_stdVector.push_back(sValue(2));
А> m_stdVector.push_back(sValue(1));
А> std::sort( m_stdVector.begin(), m_stdVector.end(), boost::bind(&sValue::iA,_1));
А>
А>При выполнении получаю DEBUG_ERROO
А>А>_DEBUG_ERROR2("invalid operator<", _Where, _Line);
А>
А>Не подскажите в чем проблема
Я так понял, тебе надо отсортировать вестор структур по полю iA. да?