Лучший/правильный способ сравнения и агрегирования векторов, содержащих заказы, на C++?C++

Программы на C++. Форум разработчиков
Anonymous
 Лучший/правильный способ сравнения и агрегирования векторов, содержащих заказы, на C++?

Сообщение Anonymous »

Я очень давно не писал никакого значимого C++ и в основном использовал Python/Java в течение последних нескольких лет, поэтому мне интересно/надеюсь, есть ли лучший способ кодирования на C++ следующего:
У меня есть книга ордеров, содержащая (финансовые) рыночные ордера.
Книга ордеров представлена ​​в виде вектора, где каждая векторная запись содержит запись ордера, т. е. цену ордера + размер ордера (и сторона Bid/Ask)
Вполне возможно, что может быть несколько записей ордеров по одной и той же цене, например

Код: Выделить всё

A : 99 : 5000
A : 99 : 2342
A : 98 : 6640
A : 98 : 1800
A : 97.78 : 2731
A : 97 : 14704
A : 97 : 5281
A : 97 : 75641
A : 96 : 3200
Где A = Ask, столбец 2 (99–96) — это цена ордера, а столбец 3 — размер ордера.
Мне нужно чтобы в итоге получилось что-то вроде:

Код: Выделить всё

A : 99 : 7342
A : 98 : 8440
A : 97.78 : 2731
A : 97 : 95626
A : 96 : 3200
Сейчас я использую код, который выглядит примерно так:

Код: Выделить всё

for (auto i = 0u; i + 1 < mboAggreg.size();) {
if (mboAggreg[i].OrderPrc == mboAggreg[i + 1].OrderPrc)
{
mboAggreg[i].OrderSize += mboAggreg[i + 1].OrderSize;
mboAggreg.erase(mboAggreg.begin() + i + 1);
// dont increment index - as we may have more than two orders with the same price
}
else
i++;
}
Это работает, но мне интересно, есть ли лучший/более чистый/правильный способ сделать это на C++ (STL)?
Я попробую Ожидайте, что вы проделаете вышеописанное для нескольких тысяч книг заказов, некоторые из которых довольно волатильны и активно торгуются, поэтому любая эффективность будет наиболее полезна.
Заранее спасибо..

Подробнее здесь: https://stackoverflow.com/questions/790 ... rders-in-c

Вернуться в «C++»