Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Трансляция кода из C++ в java


Автор: Isaev 22.11.2010, 21:33
Доброго времени суток!
Подскажите, как следующий код
Код
struct PQSorter
{
       bool operator ()(Vertex *lhs, Vertex *rhs)
       {
            return lhs->Cost + lhs->Heuristics > rhs->Cost + rhs->Heuristics;
       }
};

struct CompareVPtrs:public binary_function<Vertex*,Vertex*,bool>
{
       bool operator()(Vertex *lhs, Vertex *rhs) const
       {
              //сравнить содержимое массивов lhs->State и rhs-State
              return equal((int *)lhs->State, (int *)lhs->State + 16,(int *)rhs->State);
       }
}
CompareVP;

priority_queue<Vertex*,deque<Vertex*>,PQSorter> Queue;
set<Vertex*> Vertices;

будет выглядеть в java? Запутался с поинтерами


Ладно, раз никто не ответил, пошёл другим путём....
Всем спасибо smile

Автор: Amp 23.11.2010, 12:11
Непонятно зачем приведен CompareVPtrs - в указанном коде он нигде не используется. Да еще и с магическим числом 16.
В остальном же - нужна очередь с приоритетом (java.util.PriorityQueue<Vertex>) и кастомный компаратор для нее. Выглядеть это должно как-то так:
Код

public class PQComparator implements Comparator<Vertex>
{
    public int compare(Vertex v1, Vertex v2)
    {
          if(v1.Cost + v1.Heuristics < v2.Cost + v2.Heuristics) return -1;
          if(v1.Cost + v1.Heuristics > v2.Cost + v2.Heuristics) return 1;
          return 0;
    }
}

Автор: Skipy 23.11.2010, 12:14
А Вы действительно ожидали, что Вам ответят в промежуток от 21:30 до 05:50? Не было мыслей дождаться дня?

Автор: Isaev 23.11.2010, 16:41
Цитата(Amp @  23.11.2010,  12:11 Найти цитируемый пост)
Непонятно зачем приведен CompareVPtrs - в указанном коде он нигде не используется.

Он используется ниже по коду, просто именно это место поставило в тупик

Цитата(Amp @  23.11.2010,  12:11 Найти цитируемый пост)
Выглядеть это должно как-то так:

Вот как обычно, маленький пример и всё встаёт на свои места, спасибо.

Цитата(Skipy @  23.11.2010,  12:14 Найти цитируемый пост)
А Вы действительно ожидали, что Вам ответят в промежуток от 21:30 до 05:50? 

я надеялся smile актуально было только вчера.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)